Permalink
Browse files

add Rack handler for Puma

  • Loading branch information...
1 parent eba4c74 commit 7c41cf7bb7d76658157e94813b608a470bdd6b30 @rkh rkh committed Oct 4, 2011
Showing with 43 additions and 0 deletions.
  1. +33 −0 lib/rack/handler/puma.rb
  2. +10 −0 test/test_rack_handler.rb
View
33 lib/rack/handler/puma.rb
@@ -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
View
10 test/test_rack_handler.rb
@@ -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.