kotaziです。
Railsのデバッグについて調べていた。
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
- Rubyistよ、irbを捨ててPryを使おう
- Ruby 2.x.x 入門 -そう、pry ならね。-
- Railsの開発効率をあげる - Pryを使ってRailsのコンソールをパワーアップ & デバッグをする
- Railsのコンソールをより便利にするpry-rails gem
- 今更聞けないpryの使い方と便利プラグイン集
ものすごく便利だった。