class Duoconsole::CommandServer
Constants
- RECOGNIZED_COMMANDS
Attributes
socket[R]
Public Class Methods
new(socket)
click to toggle source
# File lib/duoconsole.rb, line 102 def initialize socket @socket = socket end
Public Instance Methods
start()
click to toggle source
# File lib/duoconsole.rb, line 106 def start loop do msg = socket.recv(1000) command, args = Marshal.load(msg) retval = if valid_command?(command) require_app unless @app_required run_command(command, args) else "Unrecognized command. Valid commands are #{RECOGNIZED_COMMANDS.join(', ')}" end socket.write(retval) end end
Private Instance Methods
commander()
click to toggle source
# File lib/duoconsole.rb, line 135 def commander @commander ||= Rails::Commands::Commander.new end
dump_exception(e)
click to toggle source
# File lib/duoconsole.rb, line 139 def dump_exception e puts "#{e.class}: #{e.message}" puts e.backtrace.map {|line| "\t#{line}"} end
fork() { || ... }
click to toggle source
# File lib/duoconsole.rb, line 154 def fork Rails::Commands::Environment.fork do trap(:INT) { $stderr.flush exit } Rails.application.require_environment! if defined?(ActiveRecord::Base) ActiveRecord::Base.establish_connection end add_test_dir_to_load_path yield end end
monkeypatch_commands_gem()
click to toggle source
# File lib/duoconsole.rb, line 152 def monkeypatch_commands_gem Rails::Commands::TestEnvironment.module_eval do def fork Rails::Commands::Environment.fork do trap(:INT) { $stderr.flush exit } Rails.application.require_environment! if defined?(ActiveRecord::Base) ActiveRecord::Base.establish_connection end add_test_dir_to_load_path yield end end end end
require_app()
click to toggle source
# File lib/duoconsole.rb, line 144 def require_app Rails.env = ENV['RAILS_ENV'] = ENV['RACK_ENV'] = 'test' require APP_PATH require 'commands' monkeypatch_commands_gem @app_required = true end
run_command(command, args)
click to toggle source
# File lib/duoconsole.rb, line 128 def run_command command, args commander.send(command, *args) rescue => e dump_exception e e.class.name end
valid_command?(command)
click to toggle source
# File lib/duoconsole.rb, line 124 def valid_command? command RECOGNIZED_COMMANDS.include?(command.to_sym) end