1
0
Fork 0
mirror of https://github.com/pry/pry-rails.git synced 2022-11-09 12:36:03 -05:00
Rails >= 3 pry initializer
Find a file
Ryan Fitzgerald 035d5c8203 Add Rails 5.2 and 6.0 to build, fixing up issues
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.
2018-12-29 15:58:08 -08:00
lib Add Rails 5.2 and 6.0 to build, fixing up issues 2018-12-29 15:58:08 -08:00
scenarios Add Rails 5.2 and 6.0 to build, fixing up issues 2018-12-29 15:58:08 -08:00
spec Add Rails 5.2 and 6.0 to build, fixing up issues 2018-12-29 15:58:08 -08:00
.gitignore Switch from Appraisal to Roadshow, bump versions, add 5.1 2017-05-06 15:49:55 -07:00
Gemfile Update Gemfile to use https://rubygems.org 2017-06-01 10:52:02 -07:00
LICENCE MIT License 2012-06-08 10:49:07 +02:00
pry-rails.gemspec Bump minimum required pry version to 0.10.4 2017-02-15 19:53:46 -08:00
Rakefile Add Rails 5.2 and 6.0 to build, fixing up issues 2018-12-29 15:58:08 -08:00
Readme.md Update the readme documentation 2018-11-29 22:09:53 +01:00
scenarios.yml Add Rails 5.2 and 6.0 to build, fixing up issues 2018-12-29 15:58:08 -08:00

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.