6

Let's say I'm stopped on point while debugging:

def get_data
    byebug
 => @cache ||= calculate_data
end

And @cache has value, so on step function calculate_data won't be executed. But I need to check what's going on inside of calculate_data at this exact runtime point.

I can just execute calculate_data and see its result in console output, but can I execute function from debug console and at same time step into it? (Using byebug or some other debugging tool).

Goal - is to inspect calculate_data logic at arbitrary time, particularly when get_data called with @cache filled.

Daniel Garmoshka
  • 5,849
  • 39
  • 40
  • Then in that case you have to find `calculate_data ` and put `byebug` in that method. https://github.com/deivid-rodriguez/byebug/blob/master/GUIDE.md – Gupta Dec 22 '16 at 12:40
  • That's incorrect suggestion, because then I will stop on initial calculation (before @cache filled). But described goal - is to inspect `calculate_data` at specific runtime point, particularly when @cache is set. – Daniel Garmoshka Dec 22 '16 at 13:14
  • Would love to know how to do that too! – akuhn Dec 29 '16 at 01:19
  • I'm interested in this question too, because Capybara's DSL works in such dynamic way that even settings breakpoint to `/capybara-2.18.0/lib/capybara/node/actions.rb:237` does not make it stop when I call `attach_file`. – Nakilon Oct 16 '18 at 11:08

1 Answers1

3

With pry-moves you can execute separate debug of arbitrary function from current context:

def get_data
    binding.pry
 => @cache ||= calculate_data
end

Type debug calculate_data to run calculate_data and stop at first line inside of it.

Daniel Garmoshka
  • 5,849
  • 39
  • 40