bbxb8g
Last Updated: February 25, 2016
·
6.181K
· calamari
6b4b7f11163b1e87571995ce8c3f0bce

Use ruby debugger when debugging RSpecs

If you have a problem with some failing specs it is enough to just print out some variables and statements. But sometimes the problem is a little bit more complicated to handled this way. There the ruby debugger could by of help. Here is how you can do use it within your specs:

Install the ruby-debug gem if you haven't already. But problably you do not need it. Then start rspec with -d parameter to allow debugging and in your code, just add debugger at the point you want to set the breakpoint. That's it.

An example:

# my_test.spec.rb
describe "test me" do
  it "does something" do
    some_var = "print me"
    debugger
    false.should be true
  end
end

Running the test would now open a debugger command line where you can put in the usual ruby-debug commands, here are some, to get you started:

l= # will print the ruby code of the line you are in
   # including some lines before and after to give 
   # more context 
p some_var # would print the value of some_var
c # would continue the test as usual
n # would go to the next step
s # would step into the method you are about to call

And here you get more infos about ruby-debug including a list of all available commands.

Say Thanks
Respond

5 Responses
Add your response

1843
Img 4302

Also, if ruby-debug is in the Gemfile already, you can add
require debugger in the specfile and debugger where you want the code execution to beak. I find it faster when already running without a -dflag. Works for everything, not just RSpec.

over 1 year ago ·
1977

http://pryrepl.org/ - Pry allows you to drop into a full on REPL - inside the scope it was invoked in - during your tests by using binding.pry instead of debugger.

over 1 year ago ·
1979
Peak

@leemachin pry is what I use as well.

over 1 year ago ·
14860
41c2802d4c6b02efcb985f328991bf81

Dates on the post and comments and version references would be helpful as the rspec -d flag doesn't appear to exist anymore. However, the pry solution works. Thanks @leemachin!

over 1 year ago ·
14861
934794545f4c74ad8a6bcf9939e764a4

@codecarson: rspec -d works for me with v2.14.1

@calamari: Thanks for the tip, didn't know I could do this until I read this.

over 1 year ago ·