DBT
DBT (Dependencies and deBugging Tool) is a tool that looks for break,
require, and provides commands (and does a teensy bit of code analyzing -
it will detect VERY basic class and module declarations) to make your RubyMotion
Rakefile and debugger_cmds files short and consistent.
CAUTION: It overwrites the debugger_cmds file!
To use, include this gem (gem 'depdep'), and add app.analyze to your
Rakefile, after you have added your libraries and whatnot. It looks at
app.files and scans those files, so I mean it when I say "after you have added
your libraries and whatnot". In your source code you add DBT commands:
# @provides Foo
# @requires module:Bar
class Foo
include Bar
def scary_method
#-----> break
doing
interesting
stuff
end
end
When you run rake, these commands will be found and translated into directives
for app.files_dependencies and debugger_cmds. Run rake or rake debug=1,
and off you go!
Your files will be grep'd for ^\w*(class|module), and these will be registered
automatically as:
# you DON'T need to add these 'provides' lines!
# @provides class:ClassName
class ClassName
end
# @provides module:ModuleName
class ModuleName
end
# ...in another file...
# @requires class:ClassName
# @requires module:ModuleName
class AnotherClass < ClassName
include ModuleName
end
So right out of the box, you can add # @requires class:Foo if you're having
trouble with dependencies and want a quick fix without having to add
# @provides declarations all over the place.
Breakpoints are created using the syntax #--> break, with two or more dashes
before the >. There must not be any whitespace before or after the #.
def method
do_something
#---> break
do_dangerous_thing
end
# you can also provide a line number
#--------> break 102
101: def method
102: do_something
103: do_dangerous_thing
104: end
If a line number is given to the break command, a breakpoint will be added at
that line, otherwise it will be added to the line below break. It's better
to insert the #--> break where you NEED it, rather than hardcode line numbers,
since line numbers are not constant.