class Chronometer::DSL
Attributes
events[R]
tracepoints[R]
Public Class Methods
new()
click to toggle source
# File lib/chronometer/dsl.rb, line 7 def initialize @events = [] @tracepoints = [] end
Public Instance Methods
for_class(cls) { || ... }
click to toggle source
# File lib/chronometer/dsl.rb, line 12 def for_class(cls) @cls && raise('already in for_class') @cls = cls yield ensure @cls = nil end
for_singleton_class(cls, &blk)
click to toggle source
# File lib/chronometer/dsl.rb, line 21 def for_singleton_class(cls, &blk) for_class(cls.singleton_class, &blk) end
method(method_name, **opts)
click to toggle source
# File lib/chronometer/dsl.rb, line 25 def method(method_name, **opts) opts[:name] ||= @cls.singleton_class? ? "#{ObjectSpace.each_object(@cls).to_a.last}.#{method_name}" : "#{@cls}##{method_name}" opts.delete(:method) && raise('Cannot specify :method') opts[:method] = method_name opts[:event_type] ||= :X opts[:cls] = @cls || raise('must be in for_class block') events << Event.new(opts) end
methods(*method_names, **opts)
click to toggle source
# File lib/chronometer/dsl.rb, line 34 def methods(*method_names, **opts) method_names.flatten.each do |method_name| method method_name, **opts end end
tracepoint(event_name, &blk)
click to toggle source
# File lib/chronometer/dsl.rb, line 40 def tracepoint(event_name, &blk) @cls && raise('in for_class block') tracepoints << [event_name, blk] end