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