開発の効率を大きく向上してくれるgem Pryをさらに使いこなすための便利なコマンド19個をまとめてみました。標準のコマンドをしっかり理解してPryの使いこなしを目指します!
(04/16 20:55) オススメの記事を追加その2
🎃 オススメ記事 Pry の簡易的なコマンドまとめ Pryの設定ファイルや、関連Gemの簡易的なコマンドをまとめてくれている記事。この記事をひととおり読んだあとに、設定をいじると捗るかも!
Rails4 今のところ最強なデバッグツール達 開発やテスト環境で使っているGemfileの紹介。pryについてもかなり丁寧に書かれています!
Ruby 2.1の基本構文/基本文法まとめ&Pryの使い方 オープンソースのオブジェクト指向プログラミング言語「Ruby」の文法をゼロから学ぶための入門連載。
🐞 (1) help help
はコマンドの一覧と英語での説明を表示してくれるコマンドです。 何をおいてもこれを覚えておけば、コマンドに困ることはないと思いますw
🐝 (2) cdとls cd
はオブジェクトへの移動。ls
はオブジェクトのメソッドや、変数の表示。 Pryの基本中の基本のコマンドですが超便利・超重要です!
[1] pry(Object):1> images = Image.all ImageSite Load (10.4ms) SELECT `images`.* FROM `images` [2] pry(Object):1> cd images [3] pry(#):2> ls Enumerable#methods: all? any? chunk ... self.methods: __pry__ locals: _ _dir_ _ex_ _file_ _in_ _out_ _pry_
🗻 (3) 特別なローカル情報 次はSpecial Locals(特別なローカル情報)を表示するための7つのコマンドです。使いこなせれば結構便利です。
# _ : 1つ前のコマンドの結果 pry(main)> 5 + 5 => 10 pry(main)> _ + 10 => 20 # _ex_ : 前に発生した例外情報 pry(main)> 4 + "j" TypeError: String can't be coerced into Fixnum from (pry):2:in `+' pry(main)> _ex_ => # # _in_ : 入力値 # _out_ : 出力値 [25] pry(main)> 1 + 1 => 2 [26] pry(main)> 2 + 3 => 5 pry(main)> _out_[25] + _out_[26] => 7 # _dir_ : ディレクトリパス # _file_ : ファイルパス pry(main)> show-method pry From: /Users/john/ruby/projects/pry/lib/pry/core_extensions.rb @ .... pry(main)> _file_ => "/Users/john/ruby/projects/pry/lib/pry/core_extensions.rb"
🍮 (4) find-method find-method
はメソッドを検索してくれます。
🐡 (5) show-models MySQLのテーブル定義を参照できるのが、show-models
です。
👽 (6) show-routes
コマンドは次のとおりです。
show-routes #<= ルーティングの一覧を表示< span>show-routes --grep new #<= newに絞って表示< span> => =>
Rake routes
より高速です!
🤔 (7) show-middlewares 参照しているmiddlewareの一覧を表示してくれるのが、show-middlewares
です。
🐹 (8) reload! reload!
はRails環境全体をリロードしてくれます。
😸 (9) 自作のPryコマンドの追加 Pryコマンドの自作もできます。 プロジェクト専用のPryコマンドを作成する場合は、.pryrc
をプロジェクト直下に作成。 共通して使うPryコマンドを作成する場合は、~/.pryrc
を作成。 作成したファイルに次のように追加。
command_set = Pry::CommandSet.new do command "コマンドの名前", "コマンドの説明" do |引数| # ここに処理を書く end end Pry.config.commands.import my_command_set
ちなみに、このGist には次のような便利なコマンドがありました。
コマンド | 意味・機能 |:——-|:—————- copy | 引数をクリップボードにコピー clear | 現在のPryの表示をクリア sql | 引数のSQLを実行 caller_method | 呼び出し元のメソッドを表示
この4つのコマンドを使いたい場合は、下を。pryrcに追加してください。
%w[rubygems pp logger].each do |gem| begin require gem rescue LoadError end end Pry.config.editor = "mate -w" # Default Command Set, add custom methods here: default_command_set = Pry::CommandSet.new do command "copy", "Copy argument to the clip-board" do |str| IO.popen('pbcopy', 'w') { |f| f << str.to_s } end command "clear" do system 'clear' if ENV['RAILS_ENV'] output.puts "Rails Environment: " + ENV['RAILS_ENV'] end end command "sql", "Send sql over AR." do |query| if ENV['RAILS_ENV'] || defined?(Rails) pp ActiveRecord::Base.connection.select_all(query) else pp "Pry did not require the environment, try `pconsole`" end end command "caller_method" do |depth| depth = depth.to_i || 1 if /^(.+?):(\d+)(?::in `(.*)')?/ =~ caller(depth+1).first file = Regexp.last_match[1] line = Regexp.last_match[2].to_i method = Regexp.last_match[3] output.puts [file, line, method] end end end Pry.config.commands.import default_command_set Pry.config.should_load_plugins = false
🍄 (10) urlヘルパーが生成するパス/urlの確認 app.product_index_path #=> "/product" app.admin_product_index_url #=> "http://www.example.com/product"
🚌 (11) リクエストしてコントローラの呼び出し app.get "http://0.0.0.0:300/" .... #=> 200 app.response.body #=> レスポンスのhtmlが表示
🏈 (12) viewヘルパーの呼び出し helper.number_to_currency(7777777) #=> "7,777,777円" helper.image_tag "https://www.google.co.jp/images/srpr/logo4w.png" #=> " "
🐠 Pry公式Wiki Pryは公式のWikiが充実しているので、もし良かったらぜひ見てみてください!
pry/pry Wiki
🚜 こちら戻うぞ:Pryをさらに強力にしてくれる拡張機能 Pryの拡張機能の紹介は、拙作の「Pryの秘めた力を最大限引き出す4つの拡張機能 」 をご参照ください!
🎂 参考リンク Happy Elements Labs: Rubyist必携 pry-railsを使いこなせば幸せになれる
rails console の tips #Ruby #Rails - Qiita
🐮 変更来歴 (01/23 11:15) 新規作成 (03/26 23:05)『urlヘルパーが生成するパス/urlの確認、リクエストしてコントローラの呼び出し、viewヘルパーの呼び出し』を追加 (04/05 22:35) オススメの記事を追加 (04/16 20:55) オススメの記事を追加その2
🖥 VULTRおすすめ
「VULTR 」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。
最近はVULTR のヘビーユーザーになので、「ここ 」から会員登録してもらえるとサービス開発が捗ります!