class Msgr::CLI
Attributes
options[R]
Public Class Methods
new(options)
click to toggle source
# File lib/msgr/cli.rb, line 9 def initialize(options) @options = options if !File.exist?(options[:require]) || (File.directory?(options[:require]) && !File.exist?("#{options[:require]}/config/application.rb")) raise <<~ERR Rails application or required ruby file not found: #{options[:require]} ERR end end
run(argv)
click to toggle source
# File lib/msgr/cli.rb, line 59 def run(argv) new(parse(argv)).run end
Private Class Methods
parse(_argv)
click to toggle source
# File lib/msgr/cli.rb, line 65 def parse(_argv) options = { require: Dir.pwd, environment: 'development' } OptionParser.new do |o| o.on( '-r', '--require [PATH|DIR]', 'Location of Rails application (default to current directory)' ) do |arg| options[:require] = arg end o.on( '-e', '--environment [env]', 'Rails environment (default to development)' ) do |arg| options[:environment] = arg end end.parse! options end
Public Instance Methods
run()
click to toggle source
# File lib/msgr/cli.rb, line 21 def run ENV['RACK_ENV'] = ENV['RAILS_ENV'] = options[:environment] if File.directory?(options[:require]) require 'rails' if ::Rails::VERSION::MAJOR == 4 require File.expand_path("#{options[:require]}/config/application.rb") ::Rails::Application.initializer 'msgr.eager_load' do ::Rails.application.config.eager_load = true end end require 'msgr/railtie' require File.expand_path("#{options[:require]}/config/environment.rb") else require(options[:require]) end r, w = IO.pipe Signal.trap('INT') { w.puts 'INT' } Signal.trap('TERM') { w.puts 'TERM' } Msgr.logger = Logger.new(STDOUT) Msgr.client.start while (readable = IO.select([r])) case readable.first[0].gets.strip when 'INT', 'TERM' Msgr.client.stop break else exit 1 end end end