From 8edb6c7e5aeed022f224f163dddf02bc4468da91 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 3 Oct 2009 13:24:26 -0700 Subject: remove Configurator and use Rainbows! block This allows the server to be configured by doing something like this inside an existing Unicorn configuration file: Rainbows! do use :Revactor worker_connections 50 end This should make it obvious we're using Rainbows-only features. --- lib/rainbows/http_server.rb | 46 +++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 16 deletions(-) (limited to 'lib/rainbows/http_server.rb') diff --git a/lib/rainbows/http_server.rb b/lib/rainbows/http_server.rb index 3c2c035..8ed8fa2 100644 --- a/lib/rainbows/http_server.rb +++ b/lib/rainbows/http_server.rb @@ -5,29 +5,43 @@ module Rainbows class HttpServer < ::Unicorn::HttpServer include Rainbows - attr_accessor :worker_connections - attr_reader :use + @@instance = nil + + class << self + def setup(block) + @@instance.instance_eval(&block) + end + end def initialize(app, options) - self.app = app - self.reexec_pid = 0 - self.init_listeners = options[:listeners] ? options[:listeners].dup : [] - self.config = Configurator.new(options.merge(:use_defaults => true)) - self.listener_opts = {} - config.commit!(self, :skip => [:listeners, :pid]) - - defined?(@use) or - self.use = Rainbows.const_get(:ThreadPool) - defined?(@worker_connections) or - @worker_connections = 4 - - #self.orig_app = app + @@instance = self + rv = super(app, options) + defined?(@use) or use(:ThreadPool) + defined?(@worker_connections) or worker_connections(4) + rv end - def use=(model) + def use(*args) + return @use if args.empty? + model = begin + Rainbows.const_get(args.first) + rescue NameError + raise ArgumentError, "concurrency model #{model.inspect} not supported" + end + + Module === model or + raise ArgumentError, "concurrency model #{model.inspect} not supported" extend(@use = model) end + def worker_connections(*args) + return @worker_connections if args.empty? + nr = args.first + (Integer === nr && nr > 0) || nr.nil? or + raise ArgumentError, "worker_connections must be an Integer or nil" + @worker_connections = nr + end + end end -- cgit v1.2.3-24-ge0c7