Module: Yahns::RackupHandler
- Defined in:
- lib/yahns/rackup_handler.rb
Overview
:nodoc:
Class Method Summary collapse
Class Method Details
.default_host ⇒ Object
6 7 8 9 |
# File 'lib/yahns/rackup_handler.rb', line 6 def self.default_host environment = ENV['RACK_ENV'] || 'development' environment == 'development' ? '127.0.0.1' : '0.0.0.0' end |
.run(app, o) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/yahns/rackup_handler.rb', line 11 def self.run(app, o) cfg = Yahns::Config.new cfg.instance_eval do # we need this because "rackup -D" sends us to "/", which might be # fine for most apps, but we have SIGUSR2 restarts to support working_directory(Yahns::START[:cwd]) app(:rack, app) do addr = o[:listen] || "#{o[:Host]||default_host}:#{o[:Port]||8080}" # allow listening to multiple addresses if addr =~ /,/ addr.split(/,/).each { |l| listen(l) } else listen addr end val = o[:client_timeout] and client_timeout(val) end queue do wt = o[:worker_threads] and worker_threads(wt) end %w(stderr_path stdout_path).each do |x| x = x.to_sym val = o[x] and __send__(x, val) end end Yahns::Server.new(cfg).start.join end |
.valid_options ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/yahns/rackup_handler.rb', line 42 def self. # these should be the most common options { "listen=ADDRESS" => "address(es) to listen on (e.g. /tmp/sock)", "worker_threads=NUM" => "number of worker threads to run", # this affects how quickly graceful shutdown goes "client_timeout=SECONDS" => "timeout for idle clients", # I don't want these here, but rackup supports daemonize and # we lose useful information when that sends stdout/stderr to /dev/null "stderr_path=PATH" => "stderr destination", "stdout_path=PATH" => "stdout destination", } end |