Class: Mimi::Application::Runner
- Inherits:
-
Object
- Object
- Mimi::Application::Runner
- Includes:
- Logger::Instance
- Defined in:
- lib/mimi/application/runner.rb
Instance Attribute Summary collapse
-
#application_class ⇒ Object
readonly
Returns the value of attribute application_class.
-
#application_instance ⇒ Object
readonly
Returns the value of attribute application_instance.
Instance Method Summary collapse
- #emit(event) ⇒ Object
-
#initialize(application_class) ⇒ Runner
constructor
A new instance of Runner.
- #run ⇒ Object
- #stop_by_signal(signal) ⇒ Object
Constructor Details
#initialize(application_class) ⇒ Runner
Returns a new instance of Runner.
8 9 10 11 |
# File 'lib/mimi/application/runner.rb', line 8 def initialize(application_class) @application_class = application_class @application_instance = application_class.instance end |
Instance Attribute Details
#application_class ⇒ Object (readonly)
Returns the value of attribute application_class.
6 7 8 |
# File 'lib/mimi/application/runner.rb', line 6 def application_class @application_class end |
#application_instance ⇒ Object (readonly)
Returns the value of attribute application_instance.
6 7 8 |
# File 'lib/mimi/application/runner.rb', line 6 def application_instance @application_instance end |
Instance Method Details
#emit(event) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/mimi/application/runner.rb', line 38 def emit(event) logger.debug "emit(#{event})" handlers = application_class.event_handlers.select { |h| h[:event] == event } handlers.each do |h| application_instance.instance_exec(&h[:block]) end rescue Exception => e logger.fatal "Failed to process event '#{event}': #{e}" logger.debug e.backtrace.join("\n") raise end |
#run ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/mimi/application/runner.rb', line 13 def run application_instance.stop_requested = false init_signal_handlers emit(:configure) emit(:start) loop do break if application_instance.stop_requested emit(:tick) emit(:every) break if application_instance.stop_requested sleep Mimi::Application.[:tick_interval] end emit(:stop) true rescue Exception => e # abort "FATAL: #{e}" abort "FATAL: #{e}" end |
#stop_by_signal(signal) ⇒ Object
32 33 34 35 36 |
# File 'lib/mimi/application/runner.rb', line 32 def stop_by_signal(signal) # TODO: cant' run to log in the trap context # puts "Signal caught (#{signal}), exiting" application_instance.stop_requested = true end |