class Beez::CLI
Attributes
launcher[RW]
Public Instance Methods
parse(argv = ARGV)
click to toggle source
# File lib/beez/cli.rb, line 15 def parse(argv = ARGV) parse_options(argv) end
run()
click to toggle source
# File lib/beez/cli.rb, line 19 def run boot self_read, self_write = IO.pipe sigs = %w[INT TERM] sigs.each do |sig| trap sig do self_write.write("#{sig}\n") end rescue ArgumentError logger.warn "Signal #{sig} not supported" end launch(self_read) end
Private Instance Methods
boot()
click to toggle source
# File lib/beez/cli.rb, line 80 def boot ENV["RACK_ENV"] = ENV["RAILS_ENV"] = config.env if File.directory?(config.require) require 'rails' if ::Rails::VERSION::MAJOR < 4 raise "Beez does not supports this version of Rails" else require File.expand_path("#{config.require}/config/environment.rb") logger.info "Booted Rails #{::Rails.version} application in #{config.env} environment" end else require config.require end end
config()
click to toggle source
# File lib/beez/cli.rb, line 135 def config ::Beez.config end
handle_signal(signal)
click to toggle source
# File lib/beez/cli.rb, line 119 def handle_signal(signal) handler = signal_handlers[signal] if handler handler.call(self) else logger.warn "No signal handler for #{signal}" end end
launch(self_read)
click to toggle source
# File lib/beez/cli.rb, line 96 def launch(self_read) @launcher = ::Beez::Launcher.new if config.env == "development" && $stdout.tty? logger.info "Starting processing, hit Ctrl-C to stop" end begin launcher.start while readable_io = IO.select([self_read]) signal = readable_io.first[0].gets.strip handle_signal(signal) end rescue Interrupt logger.info "Shutting down" launcher.stop logger.info "Bye!" exit(0) end end
logger()
click to toggle source
# File lib/beez/cli.rb, line 139 def logger ::Beez.logger end
option_parser()
click to toggle source
# File lib/beez/cli.rb, line 41 def option_parser OptionParser.new.tap do |p| p.on "-e", "--env ENV", "Application environment" do |arg| config.env = arg end p.on "-r", "--require [PATH|DIR]", "Location of Rails application with workers or file to require" do |arg| if !File.exist?(arg) || (File.directory?(arg) && !File.exist?("#{arg}/config/application.rb")) raise ArgumentError, "#{arg} is not a ruby file nor a rails application" else config.require = arg end end p.on "-t", "--timeout NUM", "Shutdown timeout" do |arg| timeout = Integer(arg) raise ArgumentError, "timeout must be a positive integer" if timeout <= 0 config.timeout = timeout end p.on "-v", "--verbose", "Print more verbose output" do |arg| ::Beez.logger.level = ::Logger::DEBUG end p.on "-V", "--version", "Print version and exit" do |arg| puts "Beez #{::Beez::VERSION}" exit(0) end p.banner = "Usage: beez [options]" p.on_tail "-h", "--help", "Show help" do puts p exit(1) end end end
parse_options(argv)
click to toggle source
# File lib/beez/cli.rb, line 37 def parse_options(argv) option_parser.parse!(argv) end
signal_handlers()
click to toggle source
# File lib/beez/cli.rb, line 128 def signal_handlers { "INT" => ->(cli) { raise Interrupt }, "TERM" => ->(cli) { raise Interrupt }, } end