In addition to adding scenarios for 5.2 and 6.0, I had to do some cleanup to get everything working well: * Replace string-based version checks with numeric ones, and update all version checks to treat 6+ the same as 5 (except where necessary). * Avoid touching `ActiveSupport::Deprecation::DeprecationProxy` instances to fix a couple of warnings in Rails 6. * Update Bundler as part of container setup, because Rails 6's config seems to rely on a newer version of Bundler than the one that comes with the Ruby image. * Update the regexes in the `show-routes` spec to be compatible with 5.2 and up. * Add a new code path to `show-routes` for Rails 6. * Upgrade all bundles, just for hygiene. |
||
|---|---|---|
| lib | ||
| scenarios | ||
| spec | ||
| .gitignore | ||
| Gemfile | ||
| LICENCE | ||
| pry-rails.gemspec | ||
| Rakefile | ||
| Readme.md | ||
| scenarios.yml | ||
Description
Avoid repeating yourself, use pry-rails instead of copying the initializer to every rails project.
This is a small gem which causes rails console to open pry. It therefore depends on pry.
Prerequisites
- A Rails >= 3.0 Application
- Ruby >= 1.9
Installation
Add this line to your gemfile:
gem 'pry-rails', :group => :development
bundle install and enjoy pry.
Usage
$ rails console
[1] pry(main)> show-routes
pokemon POST /pokemon(.:format) pokemons#create
new_pokemon GET /pokemon/new(.:format) pokemons#new
edit_pokemon GET /pokemon/edit(.:format) pokemons#edit
GET /pokemon(.:format) pokemons#show
PUT /pokemon(.:format) pokemons#update
DELETE /pokemon(.:format) pokemons#destroy
beer POST /beer(.:format) beers#create
new_beer GET /beer/new(.:format) beers#new
edit_beer GET /beer/edit(.:format) beers#edit
GET /beer(.:format) beers#show
PUT /beer(.:format) beers#update
DELETE /beer(.:format) beers#destroy
[2] pry(main)> show-routes --grep beer
beer POST /beer(.:format) beers#create
new_beer GET /beer/new(.:format) beers#new
edit_beer GET /beer/edit(.:format) beers#edit
GET /beer(.:format) beers#show
PUT /beer(.:format) beers#update
DELETE /beer(.:format) beers#destroy
[3] pry(main)> show-routes --grep new
new_pokemon GET /pokemon/new(.:format) pokemons#new
new_beer GET /beer/new(.:format) beers#new
[4] pry(main)> show-models
Beer
id: integer
name: string
type: string
rating: integer
ibu: integer
abv: integer
created_at: datetime
updated_at: datetime
belongs_to hacker
Hacker
id: integer
social_ability: integer
created_at: datetime
updated_at: datetime
has_many pokemons
has_many beers
Pokemon
id: integer
name: string
caught: binary
species: string
abilities: string
created_at: datetime
updated_at: datetime
belongs_to hacker
has_many beers through hacker
$ DISABLE_PRY_RAILS=1 rails console
irb(main):001:0>
Custom Rails prompt
If you want to permanently include the current Rails environment and project name
in the Pry prompt, put the following lines in your project's .pryrc:
Pry.config.prompt = Pry::Prompt[:rails][:value]
If .pryrc could be loaded without pry-rails being available or installed,
guard against setting Pry.config.prompt to nil:
if Pry::Prompt[:rails]
Pry.config.prompt = Pry::Prompt[:rails][:value]
end
Check out change-prompt --help for information about temporarily
changing the prompt for the current Pry session.
Developing and Testing
This repo uses Roadshow to generate a Docker Compose file for each supported version of Rails (with a compatible version of Ruby for each one).
To run specs across all versions, you can either get the Roadshow tool and
run roadshow run, or use Docker Compose directly:
$ for fn in scenarios/*.docker-compose-yml; do docker-compose -f $fn run --rm scenario; done
You can also manually run the Rails console and server on each version with
roadshow run rake console and roadshow run rake server, or run them on a
specific version with, e.g., roadshow run -s rails40 rake console.
To update the set of scenarios, edit scenarios.yml and run roadshow generate, although the Gemfiles in the scenarios directory need to be
maintained manually.
Alternative
If you want to enable pry everywhere, make sure to check out pry everywhere.