rails consoleの使い方 「irb」と「pry」の違い、導入方法について
こんにちは!
web系エンジニアとして自社開発企業への転職を目指して、
プログラミング学習中のsiです!
この記事の対象者
- rails consoleってなに?って方
- 「irb」と「pry」の違いがよく分からないって方
- 「pry」を使ってみたいけど使い方が分からない!って方
今回はrails consoleについて、
また「irb」と「pry」の違いについて解説していきます!
結論から言ってしまうと、「irb」よりも「pry」の方が断然便利です!
そのため、この記事では、「pry」の導入方法・使い方を主に解説していきます^ ^
※この記事で出てくる「%」はプロンプトなので実際に入力する必要はありません
rails consoleとは?
rails consoleとはRubyのREPLを使用するためのRailsコマンドになります。
REPLとは:
Read-Eval-Print-Loopの略称で、
入力・評価・出力の流れをループすることを意味します。
また、REPLは対話型評価環境とも言われたりします。
つまり、入力・評価・出力、といった対話的なプロセスを経てコードを実行していく
ということです。
REPLを理解するにあたって、こちらの記事がとても参考になりました^ ^
そして、Rubyには「irb」と「pry」といった2つのREPLがあり、
これらはRubyのメソッドを実行したり、
データベースに直接データを保存したりすることが出来ます。
irbとpryの違いについて
irbでは実行出来ないコマンドもpryでは実行出来たりなど、
irbよりもpryの方が機能的に優れたものになってます。
また、pry-byebugというgemを入れることで、デバックを行うことも出来たりします。
基本的にRailsプロジェクト内のターミナルでrails consoleを実行すると、
デフォルトでは下のように「irb」が起動します
% rails console
Running via Spring preloader in process 12282
Loading development environment (Rails 6.0.3.4)
irb(main):001:0>
irbよりもpryの方が機能的に優れてるならpryを使いたいですよね!
次は、pryを使用するための導入手順について解説します♪
pry導入手順
1.Gemfileに以下のように記述する
gem 'pry-rails'
2.bundle installを行う
% bundle install
3.rails consoleを起動
% rails console
Running via Spring preloader in process 12554
Loading development environment (Rails 6.0.3.4)
[1] pry(main)>
このようにpry(main)>と表示されてればOKです^ ^
pryでのみ使用できるコマンド
irbでは使用出来ないが、pryでは使用できる主なコマンドについて紹介します!
コマンド | 使用方法 |
show-model <モデル名> | 特定のモデルのカラム名とデータタイプの確認 |
show-models | 全てのモデルのカラム名とデータタイプの確認 |
show-routes | ルーティングの確認(rails routesよりも高速) |
show-middleware | プロジェクトで使用しているミドルウェアの表示 |
recognize-path <パス> | ルーティングの確認(コントローラーとアクション) |
今回は例として、
「show-model <モデル名>」と「recognize-path <パス>」を実行してみます。
pryでshow-models Postを実行
[2] pry(main)> show-model Post
Post
id: integer
title: string
content: text
created_at: datetime
updated_at: datetime
# このようにPostモデルの詳細を確認することが出来る
pryでrecognize-path /を実行
[2] pry(main)> recognize-path /
{:controller=>"posts", :action=>"index"}
# このように「/」というパスのコントローラー名とアクション名を確認することが出来る
今回紹介したコマンド以外にも、
pryでは便利なコマンドがたくさんあります^_^
最後に
今回はrails consoleで使用できる「irb」と「pry」について、
解説してみました^ ^
両者の違いがわかってスッキリですね!
今後も、どんどん記事投稿を行なっていくので、
よければ、応援の方お願い致します(*^ω^*)
それでは!