module Mimi::Application::DSL
Public Instance Methods
configure(opts = nil, &block)
click to toggle source
Calls superclass method
# File lib/mimi/application/dsl.rb, line 9 def configure(opts = nil, &block) if opts super(opts) else register_event_handler(:configure, block) end end
event_handlers()
click to toggle source
Returns list of event handlers, including those defined in a subclass
# File lib/mimi/application/dsl.rb, line 50 def event_handlers local_event_handlers = @event_handlers || [] return local_event_handlers unless superclass.respond_to?(:event_handlers) superclass.event_handlers + local_event_handlers end
every(seconds, &block)
click to toggle source
Registers 'every <sec>' handler
# File lib/mimi/application/dsl.rb, line 25 def every(seconds, &block) if !seconds.is_a?(Numeric) || seconds <= 0 raise ArgumentError, 'Positive number of seconds is expected as an argument' end wrap_block = proc do @every_block_opts ||= {} opts = @every_block_opts[block.object_id] || {} next_run_at = opts[:next_run_at] next if next_run_at && next_run_at >= Time.now block.call opts[:next_run_at] = Time.now + seconds @every_block_opts[block.object_id] = opts end register_event_handler(:every, wrap_block) end
on(event, &block)
click to toggle source
Registers handler
# File lib/mimi/application/dsl.rb, line 19 def on(event, &block) register_event_handler(event, block) end
register_event_handler(event, block, opts = {})
click to toggle source
Registers event handler
# File lib/mimi/application/dsl.rb, line 43 def register_event_handler(event, block, opts = {}) @event_handlers ||= [] @event_handlers << { event: event, block: block, options: opts } end