Help us understand the problem. What is going on with this article?

Ruby - pry導入編

More than 3 years have passed since last update.

kotaziです。
- kotazi.com

Railsのデバッグについて調べていた。

pryを知った。便利そうだったことメモ書き。


Pryとは

pry

PryはRuby標準的なIRBシェルの強力な代替手段です。
シンタックスハイライトや、フレキシブルなプラグインアーキテクチャ、実行時の呼び出しやドキュメントの閲覧を備えています。

インストール

$ gem install pry pry-doc
$ pry

.ls, .pwdなどでShellコマンドを呼び出せる。

Railsプロジェクトに組み込む

RailsプロジェクトにPryを入れて、ブレークポイントやステップ実行が行えるようにした。

Gemfileを編集(参考:Railsの開発効率をあげる - Pryを使ってRailsのコンソールをパワーアップ & デバッグをする)

group :development, :test do
  gem 'pry-rails', '~> 0.3.4'  # rails console(もしくは、rails c)でirbの代わりにpryを使われる
  gem 'pry-doc', '~> 0.8.0'    # methodを表示
  gem 'pry-byebug', '~> 3.3.0' # デバッグを実施(Ruby 2.0以降で動作する)
  gem 'pry-stack_explorer', '~> 0.4.9.2' # スタックをたどれる
end

■ モデル確認

[12] pry(main)> show-models
Administrator
  id: integer
  email: string
  email_for_index: string
  hashed_password: string
  suspended: boolean
  created_at: datetime
  updated_at: datetime
StaffMember
  id: integer
  email: string
  email_for_index: string
  family_name: string
  given_name: string
  family_name_kana: string
  given_name_kana: string
  hashed_password: string
  start_date: date
  end_date: date
  suspended: boolean
  created_at: datetime
  updated_at: datetime

■ ルート確認

[13] pry(main)> show-routes
       Prefix Verb   URI Pattern              Controller#Action
   staff_root GET    /staff(.:format)         staff/top#index
  staff_login GET    /staff/login(.:format)   staff/sessions#new
staff_session POST   /staff/session(.:format) staff/sessions#create
              DELETE /staff/session(.:format) staff/sessions#destroy
   admin_root GET    /admin(.:format)         admin/top#index
  admin_login GET    /admin/login(.:format)   admin/sessions#new
admin_session POST   /admin/session(.:format) admin/sessions#create
              DELETE /admin/session(.:format) admin/sessions#destroy
customer_root GET    /customer(.:format)      customer/top#index
         root GET    /                        errors#routing_error
              GET    /*anything(.:format)     errors#routing_error

デバッグ

  • binding.pryを打ち込むとブレークポイントになる。
  • show-stackでスタックトレースを表示

参考URL


ものすごく便利だった。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away