lib/rack/handler/mongrel2.rb in m2r-1.0.0 vs lib/rack/handler/mongrel2.rb in m2r-2.0.0

- old
+ new

@@ -12,20 +12,34 @@ 'sender_id' => SecureRandom.uuid } def self.run(app, options = {}) options = OpenStruct.new( DEFAULT_OPTIONS.merge(options) ) - factory = M2R::ConnectionFactory.new(options.sender_id, options.recv_addr, options.send_addr) - adapter = M2R::RackHandler.new(app, factory) + parser = M2R::Request + adapter = M2R::RackHandler.new(app, connection_factory(options), parser) adapter.listen end def self.valid_options { 'recv_addr=RECV_ADDR' => 'Receive address', 'send_addr=SEND_ADDR' => 'Send address', - 'sender_id=UUID' => 'Sender UUID' + 'sender_id=UUID' => 'Sender UUID' } + end + + def self.connection_factory(options) + klass = if custom = options.connection_factory + begin + M2R::ConnectionFactory.const_get(custom.classify) + rescue NameError + require "m2r/connection_factory/#{custom.underscore}" + M2R::ConnectionFactory.const_get(custom.classify) + end + else + M2R::ConnectionFactory + end + klass.new(options) end end register :mongrel2, ::Rack::Handler::Mongrel2 end