Skip to content

Commit

Permalink
add Rack handler for Puma
Browse files Browse the repository at this point in the history
  • Loading branch information
rkh committed Oct 4, 2011
1 parent eba4c74 commit 7c41cf7
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 0 deletions.
33 changes: 33 additions & 0 deletions lib/rack/handler/puma.rb
Original file line number Diff line number Diff line change
@@ -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 changes: 10 additions & 0 deletions test/test_rack_handler.rb
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 7c41cf7

Please sign in to comment.