module Polonium module ServerRunners class MongrelServerRunner < ServerRunner def start mongrel_configurator = create_mongrel_configurator initialize_server(mongrel_configurator) Thread.start do start_server(mongrel_configurator) end @started = true end protected def start_server(mongrel_configurator) mongrel_configurator.run mongrel_configurator.log "Mongrel running at #{configuration.internal_app_server_host}:#{configuration.internal_app_server_port}" mongrel_configurator.join end def initialize_server(config) configuration = self.configuration config.listener do |*args| mongrel = (args.first || self) mongrel.log "Starting Rails in environment #{defaults[:environment]} ..." mongrel.uri "/", :handler => mongrel.rails mongrel.log "Rails loaded." mongrel.log "Loading any Rails specific GemPlugins" mongrel.load_plugins configuration.app_server_initialization.call(mongrel) end end def stop_server end def create_mongrel_configurator #:nodoc: dir = File.dirname(__FILE__) require 'mongrel/rails' settings = { :host => configuration.internal_app_server_host, :port => configuration.internal_app_server_port, :cwd => configuration.rails_root, :log_file => "#{configuration.rails_root}/log/mongrel.log", :pid_file => "#{configuration.rails_root}/log/mongrel.pid", :environment => configuration.rails_env, :docroot => "#{configuration.rails_root}/public", :mime_map => nil, :daemon => false, :debug => false, :includes => ["mongrel"], :config_script => nil } configurator = Mongrel::Rails::RailsConfigurator.new(settings) do log "Starting Mongrel in #{defaults[:environment]} mode at #{defaults[:host]}:#{defaults[:port]}" end configurator end end end end