Module: Rack::Handler::Puma
- Defined in:
- lib/rack/handler/puma.rb
Constant Summary collapse
- DEFAULT_OPTIONS =
{ :Verbose => false, :Silent => false }
Class Method Summary collapse
- .config(app, options = {}) ⇒ Object
- .run(app, **options) {|launcher| ... } ⇒ Object
- .set_host_port_to_config(host, port, config) ⇒ Object
- .valid_options ⇒ Object
Class Method Details
permalink .config(app, options = {}) ⇒ Object
[View source]
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/rack/handler/puma.rb', line 13 def self.config(app, = {}) require 'puma' require 'puma/configuration' require 'puma/events' require 'puma/launcher' = DEFAULT_OPTIONS.dup # Libraries pass in values such as :Port and there is no way to determine # if it is a default provided by the library or a special value provided # by the user. A special key `user_supplied_options` can be passed. This # contains an array of all explicitly defined user options. We then # know that all other values are defaults if = .delete(:user_supplied_options) (.keys - ).each do |k| [k] = .delete(k) end end conf = ::Puma::Configuration.new(, ) do |user_config, file_config, default_config| if .delete(:Verbose) require 'rack/common_logger' app = Rack::CommonLogger.new(app, STDOUT) end if [:environment] user_config.environment [:environment] end if [:Threads] min, max = .delete(:Threads).split(':', 2) user_config.threads min, max end if [:Host] || [:Port] host = [:Host] || [:Host] port = [:Port] || [:Port] self.set_host_port_to_config(host, port, user_config) end if [:Host] file_config.set_default_host([:Host]) end self.set_host_port_to_config([:Host], [:Port], default_config) user_config.app app end conf end |
permalink .run(app, **options) {|launcher| ... } ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/rack/handler/puma.rb', line 63 def self.run(app, **) conf = self.config(app, ) events = .delete(:Silent) ? ::Puma::Events.strings : ::Puma::Events.stdio launcher = ::Puma::Launcher.new(conf, :events => events) yield launcher if block_given? begin launcher.run rescue Interrupt puts "* Gracefully stopping, waiting for requests to finish" launcher.stop puts "* Goodbye!" end end |
permalink .set_host_port_to_config(host, port, config) ⇒ Object
[View source]
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/rack/handler/puma.rb', line 89 def self.set_host_port_to_config(host, port, config) config.clear_binds! if host || port if host && (host[0,1] == '.' || host[0,1] == '/') config.bind "unix://#{host}" elsif host && host =~ /^ssl:\/\// uri = URI.parse(host) uri.port ||= port || ::Puma::Configuration::DefaultTCPPort config.bind uri.to_s else if host port ||= ::Puma::Configuration::DefaultTCPPort end if port host ||= ::Puma::Configuration::DefaultTCPHost config.port port, host end end end |
permalink .valid_options ⇒ Object
[View source]
80 81 82 83 84 85 86 87 |
# File 'lib/rack/handler/puma.rb', line 80 def self. { "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)", "Verbose" => "Don't report each request (default: false)" } end |