class Rack::Handler::Plum

Public Class Methods

run(app, options = {}) { |server| ... } click to toggle source
# File lib/rack/handler/plum.rb, line 6
def self.run(app, options = {})
  opts = default_options.merge(options)

  config = ::Plum::Rack::Config.new(
    listeners: [
      {
        listener: ::Plum::Rack::TLSListener,
        hostname: opts[:Host],
        port: opts[:Port].to_i
      }
    ],
    debug: !!opts[:Debug],
    threadpool_size: opts[:Threads].to_i
  )

  @server = ::Plum::Rack::Server.new(app, config)
  yield @server if block_given? # TODO
  @server.start
end
shutdown() click to toggle source
# File lib/rack/handler/plum.rb, line 26
def self.shutdown
  @server.stop if @server
end
valid_options() click to toggle source
# File lib/rack/handler/plum.rb, line 30
def self.valid_options
  {
    "Host=HOST"   => "Hostname to listen on (default: #{default_options[:Host]})",
    "Port=PORT"   => "Port to listen on (default: #{default_options[:Port]})",
    "Debug"       => "Turn on debug mode (default: #{default_options[:Debug]})",
    "Threads=N"   => "Use N threads (default: #{default_options[:Threads]})",
  }
end

Private Class Methods

default_options() click to toggle source
# File lib/rack/handler/plum.rb, line 40
def self.default_options
  rack_env = ENV["RACK_ENV"] || "development"
  dev = rack_env == "development"
  default_options = {
    Host: dev ? "localhost" : "0.0.0.0",
    Port: 8080,
    Debug: dev,
    Threads: 20,
  }
end