Debugging trick

Some have probably already discovered this but I’ve been working
through some ui stories, using the rails integration test stuff.

I had a story where one very used step was failing in one place. The
failing expectation looked like this:

   response.should have_tag("tr.group_info_row td",group_title)

I wanted to look at the response, but only for the case which was
failing, so I changed this to:

  debugger unless have_tag("tr.group_info_row

td",group_title).matches?(response)
response.should have_tag(“tr.group_info_row td”,group_title)

And rdebug broke right before the expectation would have thrown its
exception, and I could see the problem, which was an earlier step
which had checked that the request had redirected without following
the redirect.

I think that this pattern of using a matcher as a predicate might be
useful in future debugging sessions.


Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

On Apr 18, 2008, at 5:14 PM, Rick DeNatale wrote:

 debugger unless have_tag("tr.group_info_row

td",group_title).matches?(response)
response.should have_tag(“tr.group_info_row td”,group_title)

And rdebug broke right before the expectation would have thrown its
exception, and I could see the problem, which was an earlier step
which had checked that the request had redirected without following
the redirect.

Yeah - I use this all the time. I have a textmate snippet called
debug(tab) which inserts the following:

require “rubygems”; require “ruby-debug”; debugger

This allows me to use it in all sort of contexts - migrations, outside
of rails projects, in failing test cases, etc.

It should be noted that in other languages (like Smalltalk and lisp)
the debugger pops up automatically when a test case fails.

I don’t know why this technique has never picked up and become popular.

Scott

On Fri, Apr 18, 2008 at 7:13 PM, Scott T.
[email protected] wrote:

the redirect.

Yeah - I use this all the time. I have a textmate snippet called
debug(tab) which inserts the following:

require “rubygems”; require “ruby-debug”; debugger

This allows me to use it in all sort of contexts - migrations, outside
of rails projects, in failing test cases, etc.
+1 Its awesome.

I also use intellij Idea, which has a console. The console does IO
with the debugger.
Whats cool is I can click or use a shortcut to jump to the file + line
link that the debugger gives.

On Fri, Apr 18, 2008 at 10:13 PM, Scott T.
[email protected] wrote:

the redirect.

Yeah - I use this all the time. I have a textmate snippet called
debug(tab) which inserts the following:

require “rubygems”; require “ruby-debug”; debugger

Well I wasn’t really talking about just using the debugger, but using
matcher.matches?(value) instead of value.should matcher as a way to
trigger a conditional break.


Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

On Apr 19, 2008, at 12:43 PM, Brian T. wrote:

failing expectation looked like this:
And rdebug broke right before the expectation would have thrown its
outside
of rails projects, in failing test cases, etc.
+1 Its awesome.

I also use intellij Idea, which has a console. The console does IO
with the debugger.
Whats cool is I can click or use a shortcut to jump to the file + line
link that the debugger gives.

Yeah - I often use ruby-debug’s mate command, which will open up the
file in textmate on the line and file
you’re currently on (it’s incredibly convenient).

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs