Frage Pry: Zeig mir den Stapel


Verwenden von Pry in Rails, wenn ich einen Haltepunkt im Code triff     binding.pry

Ich möchte wissen, wie ich hierher gekommen bin, wer mich angerufen hat, wer sie angerufen hat usw. Aber seltsamerweise sehe ich diesen Befehl nicht. Weiß jemand?


75
2018-03-08 20:54


Ursprung


Antworten:


Benutze die pry-stack_explorer Plugin, ermöglicht es Ihnen, den Call-Stack auf und ab zu bewegen (mit up und down), zeigen Sie den Callstack an (mit show-stack), und so weiter:

siehe hier:

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



Um dies ohne irgendwelche Pry-Plugins zu tun (ich hatte Probleme mit dem "pry-stack_explorer"), sehen Sie sich einfach an caller.

Ich suche tatsächlich nach meinem Projektnamen, um alle irrelevanten Schienenstapelelemente herauszufiltern. Zum Beispiel, wenn mein Projektname wäre archie Ich würde verwenden:

caller.select {|line| line.include? "archie" }

Was mir den Stack-Trace gibt, nach dem ich suche.

Ein kürzerer Weg wäre:

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

Was genauso gut funktioniert.


81
2018-02-07 05:49



Es gibt Zurückziehen welche Show ist das Backtrace für die Pry-Sitzung.

Es gibt auch wtf?. Welche Show ist das Backtrace der letzten Ausnahme? Fügen Sie weitere Fragezeichen hinzu, um mehr vom Backtrace oder ein Ausrufezeichen anzuzeigen, um alles zu sehen.

Art Hilfe in hebeln, um alle anderen Befehle zu sehen :)


77
2018-03-08 21:25



Sie können die Aufrufmethode verwenden, die bereits in der Edelsteinbibliothek definiert ist. Der Rückgabewert dieser Methode wird ein Array sein. So können Sie Array-Methoden für die Suche in diesem Zeilenbündel anwenden

Unten ist auch hilfreich für starke Spuren. https://github.com/pry/pry-stack_explorer 


1
2017-12-23 13:33