Pertanyaan Pry: tunjukkan tumpukannya


Menggunakan Pry in Rails, ketika saya menekan breakpoint di kode     binding.pry

Saya ingin tahu bagaimana saya sampai di sini, yang memanggil saya, yang memanggil mereka, dll. Tetapi anehnya saya tidak melihat perintah itu. Apakah ada yang tahu?


75
2018-03-08 20:54


asal


Jawaban:


Menggunakan pry-stack_explorer plugin, ini memungkinkan Anda untuk naik dan turun 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>)> 

44
2018-03-09 02:09



Untuk melakukan ini tanpa plugin pry (saya mengalami masalah dengan pry-stack_explorer), lihat saja caller.

Saya sebenarnya mencari nama proyek saya untuk memfilter 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 stack yang saya cari.

Cara yang lebih pendek adalah:

caller.select {|x| x["archie"] }

Yang juga berfungsi dengan baik.


81
2018-02-07 05:49



Ada pry-backtrace yang menunjukkan backtrace untuk sesi Pry.

Ada juga wtf?. Yang menunjukkan backtrace dari pengecualian terbaru. Tambahkan lebih banyak tanda tanya untuk melihat lebih banyak backtrace atau tanda seru untuk melihat semuanya.

Mengetik membantu di pry untuk melihat semua perintah lainnya :)


77
2018-03-08 21:25



Anda dapat menggunakan metode pemanggil yang sudah didefinisikan di dalam perpustakaan permata. Nilai kembalian dari metode tersebut akan berupa larik. Jadi, Anda dapat menerapkan metode array untuk pencarian di banyak baris

Di bawah ini juga membantu untuk pelacakan yang kuat. https://github.com/pry/pry-stack_explorer 


1
2017-12-23 13:33