class Geary::CLI
Constants
- Shutdown
Attributes
configuration[R]
external_signal_queue[R]
internal_signal_queue[R]
Public Class Methods
new(argv, stdout = STDOUT, stderr = STDERR, kernel = Kernel, pipe = IO.pipe)
click to toggle source
# File lib/geary/cli.rb, line 16 def initialize(argv, stdout = STDOUT, stderr = STDERR, kernel = Kernel, pipe = IO.pipe) @argv = argv @stdout = stdout @stdout = stderr @kernel = kernel @internal_signal_queue, @external_signal_queue = pipe @configuration = OptionParser.new.parse(@argv) end
Public Instance Methods
execute!()
click to toggle source
# File lib/geary/cli.rb, line 26 def execute! Celluloid.logger.level = configuration.log_level %w(INT TERM).each do |signal| trap signal do external_signal_queue.puts(signal) end end munge_environment_given(configuration) load_rails manager = Manager.new(configuration: configuration) manager.start begin loop do IO.select([internal_signal_queue]) signal = internal_signal_queue.gets.strip handle(signal) end rescue Shutdown manager.async.stop manager.wait(:done) @kernel.exit(0) end end
handle(signal)
click to toggle source
# File lib/geary/cli.rb, line 57 def handle(signal) if %w(INT TERM).include?(signal) raise Shutdown end end
Private Instance Methods
load_rails()
click to toggle source
# File lib/geary/cli.rb, line 70 def load_rails begin require 'rails' rescue LoadError Celluloid.logger.debug "Unable to load Rails" else Celluloid.logger.debug "Loading Rails" require 'geary/railtie' require 'config/environment' ::Rails.application.eager_load! end end
munge_environment_given(configuration)
click to toggle source
# File lib/geary/cli.rb, line 65 def munge_environment_given(configuration) $:.concat(configuration.included_paths) configuration.required_files.each { |file| require file } end