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