Search code examples
ruby-on-railsrubyruby-on-rails-3debuggingruby-debug

How to stop the Rails debugger for the current request


Say I have a loop in my code that calls the rails debugger a few times

def show
    animals = ['dog', 'cat', 'owl', 'tiger']
    for animal in animals
    debugger
    # do something else
end

Assuming I started my server with the --debugger option, when this page is viewed, the debugger is going to stop for every run of the loop.

I can type cont every time it stops so the request continues, but that's tedious, especially if we're not talking about it showing up 4 times as in this example, but 400. Is there a way to let the debugger continue without pausing at each point of the loop?

My currently workaround is restarting the server, but that's time consuming.


Solution

  • Just put conditions on the debugger statement so that it stops only when you want it to, e.g.:

    debugger if animal == 'tiger'
    

    or if, say, you want to examine the code only on loop 384:

    animals.each_with_index do |animal, i|
      debugger if i == 384
      # do something
    end
    

    or put in a variable that will let you continue ad hoc:

    continue_debugger = false
    animals.each do |animal|
      debugger unless continue_debugger
      # in the debugger type `p continue_debugger = true` then `c` when done
    end