Jawaban:
Gunakan plugin pry-stack_explorer , ini memungkinkan Anda untuk bergerak ke atas dan ke bawah tumpukan panggilan (dengan up
dan down
), menampilkan callstack (dengan show-stack
), dan seterusnya:
Lihat disini:
Frame number: 0/64
From: /Users/johnmair/ruby/rails_projects/personal_site/app/controllers/posts_controller.rb @ line 7 PostsController#index:
5: def index
6: @posts = Post.all
=> 7: binding.pry
8: end
[1] pry(#<PostsController>)> show-stack
Showing all accessible frames in stack (65 in total):
--
=> #0 index <PostsController#index()>
#1 [method] send_action <ActionController::ImplicitRender#send_action(method, *args)>
#2 [method] process_action <AbstractController::Base#process_action(method_name, *args)>
#3 [method] process_action <ActionController::Rendering#process_action(*arg1)>
<... clipped ...>
[2] pry(#<PostsController>)> up
Frame number: 1/64
Frame type: method
From: /Users/johnmair/.rvm/gems/ruby-2.0.0-p0/gems/actionpack-3.2.8/lib/action_controller/metal/implicit_render.rb @ line 4 ActionController::ImplicitRender#send_action:
3: def send_action(method, *args)
=> 4: ret = super
5: default_render unless response_body
6: ret
7: end
[3] pry(#<PostsController>)>
Untuk melakukan ini tanpa plugin pry (saya mengalami masalah dengan pry-stack_explorer), lihat saja caller
.
Saya benar-benar mencari nama proyek saya untuk menyaring semua item tumpukan rel yang tidak relevan. Misalnya, jika nama proyek saya, archie
saya akan menggunakan:
caller.select {|line| line.include? "archie" }
Yang memberi saya jejak tumpukan yang saya cari.
Cara yang lebih singkat adalah:
caller.select {|x| x["archie"] }
Yang mana bekerja dengan baik.
caller.reject {|x| x["vendor/bundle"] || x["/.rbenv/versions/"] }
Ada pry-backtrace yang merupakan backtrace untuk sesi Pry.
Ada juga wtf? . Yang menunjukkan lacak balik dari pengecualian terbaru. Tambahkan lebih banyak tanda tanya untuk melihat lebih banyak lacak balik atau tanda seru untuk melihat semuanya.
Ketik help in pry untuk melihat semua perintah lainnya :)
pry-backtrace
tidak apa-apa, tetapi pry-stack_explorer
plugin jauh lebih kuat (meskipun itu permata lain, plugin)
Anda dapat menggunakan metode pemanggil yang telah ditentukan di dalam perpustakaan permata. Nilai yang dikembalikan dari metode itu akan menjadi array. Jadi Anda dapat menerapkan metode array untuk pencarian di sekelompok baris itu
Di bawah ini juga berguna untuk penelusuran yang kuat. https://github.com/pry/pry-stack_explorer
Memperluas jawaban Paul Oliver.
Jika Anda memiliki daftar frasa yang ingin Anda kecualikan secara permanen, Anda dapat melakukannya dengan fitur perintah khusus di Pry.
Masuk ~/.pryrc
:
Pry::Commands.block_command "callerf", "Filter the caller backtrace" do
output = caller.reject! { |line| line["minitest"] || line["pry"] }
puts "\e[31m#{output.join("\n")}\e[0m"
end
Memanggil callerf
akan menghasilkan caller
keluaran yang difilter . Tanda-tanda aneh di sekitar #{output}
mewarnai untuk meniru tampilan asli dari caller
. Saya mengambil warna dari sini .
Alternatifnya, jika Anda tidak ingin membuat perintah khusus, gunakan Ctrl+R
untuk menelusuri riwayat perintah.
~/.pryrc
. Jika tidak, buat saja. ~/
selalu berarti folder home di sistem Unix.