mirror of
https://github.com/puma/puma.git
synced 2022-11-09 13:48:40 -05:00
add Rack handler for Puma
This commit is contained in:
parent
eba4c745a5
commit
7c41cf7bb7
2 changed files with 43 additions and 0 deletions
33
lib/rack/handler/puma.rb
Normal file
33
lib/rack/handler/puma.rb
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
require 'rack/handler'
|
||||||
|
require 'puma'
|
||||||
|
|
||||||
|
module Rack
|
||||||
|
module Handler
|
||||||
|
module Puma
|
||||||
|
DEFAULT_OPTIONS = {:Host => '0.0.0.0', :Port => 8080, :Threads => '0:16'}
|
||||||
|
|
||||||
|
def self.run(app, options = {})
|
||||||
|
options = DEFAULT_OPTIONS.merge(options)
|
||||||
|
server = ::Puma::Server.new(app)
|
||||||
|
min, max = options[:Threads].split(':', 2)
|
||||||
|
|
||||||
|
server.add_tcp_listener options[:Host], options[:Port]
|
||||||
|
server.min_threads = Integer(min)
|
||||||
|
server.max_threads = Integer(max)
|
||||||
|
yield server if block_given?
|
||||||
|
|
||||||
|
server.run.join
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.valid_options
|
||||||
|
{
|
||||||
|
"Host=HOST" => "Hostname to listen on (default: localhost)",
|
||||||
|
"Port=PORT" => "Port to listen on (default: 8080)",
|
||||||
|
"Threads=MIN:MAX" => "min:max threads to use (default 0:16)"
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
register :puma, Puma
|
||||||
|
end
|
||||||
|
end
|
10
test/test_rack_handler.rb
Normal file
10
test/test_rack_handler.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
require 'test/unit'
|
||||||
|
|
||||||
|
class TestPumaUnixSocket < Test::Unit::TestCase
|
||||||
|
def test_handler
|
||||||
|
handler = Rack::Handler.get(:puma)
|
||||||
|
assert_equal Rack::Handler::Puma, handler
|
||||||
|
handler = Rack::Handler.get('Puma')
|
||||||
|
assert_equal Rack::Handler::Puma, handler
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue