ruby on rails - inside - Pry: muéstrame la pila
pry-byebug (4)
Hay una pry-backtrace que muestra la traza inversa de la sesión de Pry.
También hay wtf? . ¿Qué espectáculo es el rastreo de la excepción más reciente? Agregue más signos de interrogación para ver más de la traza inversa o un signo de exclamación para verlo todo.
Escriba help en palanca para ver todos los otros comandos :)
Usando Pry in Rails, cuando llego a un punto de interrupción en el código binding.pry
Quiero saber cómo llegué aquí, quién me llamó, quién los llamó, etc. Pero extrañamente no veo ese comando. ¿Alguien sabe?
Para hacer esto sin plugins de palanca (estaba teniendo problemas con pry-stack_explorer), solo mira a la caller
.
De hecho, busco el nombre de mi proyecto para filtrar todos los elementos irrelevantes de la pila de rieles. Por ejemplo, si el nombre de mi proyecto fuera archie
, usaría:
caller.select {|line| line.include? "archie" }
Lo que me da el rastro de pila que estoy buscando.
Un camino más corto sería:
caller.select {|x| x["archie"] }
Lo cual funciona igual de bien.
Puede usar el método de llamada que ya se ha definido dentro de la biblioteca de gemas. El valor de retorno de ese método será una matriz. Entonces puede aplicar métodos de matriz para búsqueda en ese grupo de líneas
A continuación también es útil para poderosa traza. pry-stack_explorer
Use el complemento pry-stack_explorer , le permite moverse hacia arriba y hacia abajo en la pila de llamadas (con up
y down
), visualizar la pila de llamadas (con show-stack
), y así sucesivamente:
mira aquí:
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>)>