class Duoconsole
Attributes
child_socket[RW]
parent_socket[RW]
Public Class Methods
start()
click to toggle source
# File lib/duoconsole.rb, line 5 def self.start new.start end
Public Instance Methods
command_client()
click to toggle source
# File lib/duoconsole.rb, line 61 def command_client @command_client ||= CommandClient.new(parent_socket) end
create_socket_pair()
click to toggle source
# File lib/duoconsole.rb, line 27 def create_socket_pair self.child_socket, self.parent_socket = Socket.pair(:UNIX, :DGRAM, 0) end
fork_child()
click to toggle source
# File lib/duoconsole.rb, line 31 def fork_child child_pid = fork do trap(:INT) { # Ignore. This process needs to stay alive until the parent process exits } CommandServer.new(child_socket).start end # cleanup before exiting at_exit { Process.kill(:QUIT, child_pid) parent_socket.close child_socket.close } end
load_application()
click to toggle source
# File lib/duoconsole.rb, line 48 def load_application require APP_PATH Rails.application.require_environment! end
preload_gems()
click to toggle source
# File lib/duoconsole.rb, line 19 def preload_gems require 'rails/all' if defined?(Bundler) Bundler.require(:default, :assets) end end
start()
click to toggle source
# File lib/duoconsole.rb, line 11 def start preload_gems create_socket_pair fork_child load_application start_console end
start_console()
click to toggle source
# File lib/duoconsole.rb, line 53 def start_console require 'rails/commands/console' require 'rails/console/app' ConsoleDelegation.duoconsole = self Rails::ConsoleMethods.send :include, ConsoleDelegation Rails::Console.start(Rails.application) end