I am just getting started with Ruby on Rails, an application framework that everyone seems to love for web applications. I am learning lots, so I figured I’d post things I learn here.
I’m doing “Test Driven Development” on this project, so instead of writing code first, I should write a test, right? So, I open test/unit/myclass_test.rb, add a test, save the file, and then run
rake test_units
which runs the tests. Of course, my code doesn’t work and I get an error, so now I want to debug my test. I want to see what went wrong. I search Google, and find a helpful presentation on debugging in Ruby. It turns out debugging the test is as easy as entering
ruby -rdebug test/unit/myclass_test.r
That drops me into the debugger. Now I want to add a breakpoint, so I type
help
which tells me that to add a breakpoint on line 8 of my file, I want this command:
break test/unit/myclass_test.r:8
I could also just type break 8, since I’m only debugging one file, but it’s useful to see how to use filenames. Now I’ve got a breakpoint so I can run ahead to it using the continue command:
cont
This gives me a bunch of errors, so I hit enter again, which means “repeat the last command” which happens to be “continue”.
I get more errors, so I keep hitting enter until it says
Breakpoint 1, test_load at test/unit/myclass_test.rb:8
Super! Now I’m here and I can poke around as I please. Again, the help command is your friend, but what I wanted to do is see what methods were available in the File class. So I used this command:
method File
and the debugger spits back
atime chmod chown ctime flock lstat mtime path truncate
Ahh! I was hoping to see a “basename” method, but it’s not there! Clearly the methods aren’t getting initialized the way I hoped. So, I’m off to do some more debugging.