Posted about 3 years ago. Visible to the public. Repeats.
Ruby: How to use global variables for a conditional debugger
You can share a state in Ruby with global variables Archive . Even if you should avoid them whenever possible, for debugging an application this could be temporary quite handy.
Example:
Copyclass User after_save { byebug if $debug; nil } def lock self.locked = true save end end
CopyRspec.describe User do let(:user) { create(:user) } before do # Many users are created and saved in this hook, but we don't want the debugger to stop for them 10.times { create(:user) } end it do # At this point we want to stop in the debugger for all following tests, when the :lock call runs into the after_save $debug = true expect { user.lock }.to change(user, :locked).from(false).to(true) end end
Running this spec will only trigger one debug session. Otherwise you will have to count how many times you exited the debug session to ensure you are in the "desired" session.
Your development team has a full backlog of feature requests, chores and refactoring coupled with deadlines? We are familiar with that. With our "DevOps as a Service" offering, we support developer teams with infrastructure and operations expertise.