Jawaban:
Gunakan plugin pry-stack_explorer , ini memungkinkan Anda untuk bergerak ke atas dan ke bawah tumpukan panggilan (dengan updan 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, archiesaya 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-backtracetidak apa-apa, tetapi pry-stack_explorerplugin 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 callerfakan menghasilkan callerkeluaran 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+Runtuk menelusuri riwayat perintah.
~/.pryrc. Jika tidak, buat saja. ~/selalu berarti folder home di sistem Unix.