<p>Shoes has some built in dump commands (Shoes.debug), but are there other tools that can debug the code without injecting debug messages throughout?  Something like gdb would be great.</p>

Have you looked at the ruby-debug gem?
```
```
% sudo gem install ruby-debug
```
```
The rdebug executable gives you a similar interface to gdb (breakpoint setting, etc).  You just simply execute your script with rdebug instead of ruby.
You can also do something like this to avoid manually setting breakpoints:
```
```
class Foo
  require 'ruby-debug'
  def some_method_somewhere
    debugger # acts like a breakpoint is set at this point
  end
end
```
```
Here's a tutorial on ruby-debug:
http://www.datanoise.com/articles/2006/7/12/tutorial-on-ruby-debug