-
Notifications
You must be signed in to change notification settings - Fork 0
3.2.1 アプリケーションをデバッグする
Katuyuki Kakigi edited this page Jan 14, 2016
·
3 revisions
Pryはirbの代替となる非常に強力な対話型インタプリタです。
また、プラグインを追加することによりデバッガーとしての機能も実現できます。
$ gem install pry pry-doc
Pryを実行する
$ pry
[1] pry(main)> 1 + 2
=> 3
[2] pry(main)> "ruby".upcase
=> "RUBY"
Pryのスコープの移動を利用する
[3] pry(main)> foo = "foo"
=> "foo"
[4] pry(main)> cd foo
[5] pry("foo"):1> ls
Comparable#methods: < <= > >= between?
String#methods:
% ascii_only? chomp delete encode hash lstrip reverse setbyte start_with? to_c tr_s!
* b chomp! delete! encode! hex lstrip! reverse! shell_split strip to_f unicode_normalize
+ bytes chop downcase encoding include? match rindex shellescape strip! to_i unicode_normalize!
<< bytesize chop! downcase! end_with? index next rjust shellsplit sub to_r unicode_normalized?
<=> byteslice chr dump eql? insert next! rpartition size sub! to_s unpack
== capitalize clear each_byte force_encoding inspect oct rstrip slice succ to_str upcase
=== capitalize! codepoints each_char freeze intern ord rstrip! slice! succ! to_sym upcase!
=~ casecmp concat each_codepoint getbyte length partition scan split sum tr upto
[] center count each_line gsub lines prepend scrub squeeze swapcase tr! valid_encoding?
[]= chars crypt empty? gsub! ljust replace scrub! squeeze! swapcase! tr_s
self.methods: __pry__
locals: _ __ _dir_ _ex_ _file_ _in_ _out_ _pry_
[6] pry("foo"):1> upcase
=> "FOO"
Gemfileにpryを追加する
group :development do
gem 'sinatra-reloader'
gem 'pry'
end
バンドルを実行
$ bundle
_lib/application.rb_の7行目に以下のコードを追加する
require 'pry'
コードで確認したい部分に以下のコードを追加する
binding.pry
上記のコードを通る部分のアプリケーションを実行すると以下の様になりpryを実行できるようになる
From: /home/ubuntu/workspace/lib/application.rb @ line 39 self.GET /:
34: require 'sinatra/reloader'
35: register Sinatra::Reloader
36: end
37:
38: get '/' do
=> 39: binding.pry
40: redirect '/tasks'
41: end
42:
43: get '/tasks' do
44: @tasks = Task.order('created_at DESC')
[1] pry(#<Todo::Application>)>
Gemfileにpry-byebugを追加する
group :development do
gem 'sinatra-reloader'
gem 'pry'
gem 'pry-byebug'
end
バンドルを実行
$ bundle
binging.pryを指定した箇所で以下のコマンドを実行できるようになる
コマンド | 説明 |
---|---|
step | 次の行、あるいはメソッドへステップ実行する |
next | 現在のスタックの次の行までプログラムを実行する |
continue | プログラムの続きを実行する |
up | 上位スタックに移動する |
down | 下位スタックに移動する |
frame | 特定のフレームに移動する |
break | ブレークポイントを設定する |
Gemfileにawesome_printを追加する
group :development do
gem 'sinatra-reloader'
gem 'pry'
gem 'pry-byebug'
gem 'pry-stack_explorer'
gem 'awesome_print'
end
バンドルを実行
$ bundle
.pryrcファイルを追加
$ touch .pryrc
.pryrcファイルを編集する
# Set alias
if defined?(PryByebug)
Pry.commands.alias_command 'c', 'continue'
Pry.commands.alias_command 's', 'step'
Pry.commands.alias_command 'n', 'next'
Pry.commands.alias_command 'f', 'finish'
end
# Hit Enter to repeat last command
Pry::Commands.command /^$/, "repeat last command" do
_pry_.run_command Pry.history.to_a.last
end
# For awesome_print
require "awesome_print"
AwesomePrint.pry!
# Editer
Pry.config.editor = "vi"