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.