I type next
on binding.pry or byebug to step over to the next line. I use step
to step into the procedure. How do I step BACK a line?
I've been looking through documentation with no luck. Help greatly appreciated. Thanks.
I type next
on binding.pry or byebug to step over to the next line. I use step
to step into the procedure. How do I step BACK a line?
I've been looking through documentation with no luck. Help greatly appreciated. Thanks.
You can make use of up & down methods in binding.pry
see here:
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>)>
Compromise solution is re-entering into execution of previous pieces of code with pry-moves.
For example if you stopped inside of Controller's action:
def index
list = Orders.for_user(current_user)
=> binding.pry
end
And now you want to understand why is list
empty? - You can run:
> debug Orders.for_user(current_user)
and check what's happening there
Why we have to use compromises? The problem is that ruby environment doesn't keep whole state of system on each step. Presumably it is because most probably you still will use external systems (e.g. by API calls) which may change their internal state and you can't automatically "roll it back".
There isn't a step back or undo step command listed on this Pry Cheat Sheet. I would suggest ctrl + c (x2), ctrl + d, the get back into your container and hit the binding pry again.