class Puma::Configuration::DSL

The methods that are available for use inside the config file.

Public Class Methods

new(options) click to toggle source
# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 159
def initialize(options)
  @options = options
end

Public Instance Methods

_load_from(path) click to toggle source
# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 163
def _load_from(path)
  instance_eval File.read(path), path, 1
end
activate_control_app(url="auto", opts=nil) click to toggle source

Start the Puma control rack app on url. This app can be communicated with to control the main server.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 181
def activate_control_app(url="auto", opts=nil)
  @options[:control_url] = url

  if opts
    if tok = opts[:auth_token]
      @options[:control_auth_token] = tok
    end

    if opts[:no_token]
      @options[:control_auth_token] = :none
    end
  end
end
after_worker_boot(&block) click to toggle source

*Cluster mode only* Code to run when a worker boots to setup the process after booting the app.

This can be called multiple times to add hooks.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 318
def after_worker_boot(&block)
  @options[:after_worker_boot] << block
end
app(obj=nil, &block) click to toggle source

Use obj or block as the Rack app. This allows a config file to be the app itself.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 170
def app(obj=nil, &block)
  obj ||= block

  raise "Provide either a #call'able or a block" unless obj

  @options[:app] = obj
end
bind(url) click to toggle source

Bind the server to url. tcp:// and unix:// are the only accepted protocols.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 198
def bind(url)
  @options[:binds] << url
end
daemonize(which=true) click to toggle source

Daemonize the server into the background. Highly suggest that this be combined with pidfile and stdout_redirect.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 210
def daemonize(which=true)
  @options[:daemon] = which
end
directory(dir) click to toggle source

The directory to operate out of.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 323
def directory(dir)
  @options[:directory] = dir.to_s
  @options[:worker_directory] = dir.to_s
end
drain_on_shutdown(which=true) click to toggle source

When shutting down, drain the accept socket of pending connections and proces them. This loops over the accept socket until there are no more read events and then stops looking and waits for the requests to finish.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 218
def drain_on_shutdown(which=true)
  @options[:drain_on_shutdown] = which
end
environment(environment) click to toggle source

Set the environment in which the Rack's app will run.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 223
def environment(environment)
  @options[:environment] = environment
end
lowlevel_error_handler(obj=nil, &block) click to toggle source

Use obj or block as the low lever error handler. This allows a config file to change the default error on the server.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 344
def lowlevel_error_handler(obj=nil, &block)
  obj ||= block
  raise "Provide either a #call'able or a block" unless obj
  @options[:lowlevel_error_handler] = obj
end
on_restart(&block) click to toggle source

Code to run before doing a restart. This code should close logfiles, database connections, etc.

This can be called multiple times to add code each time.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 232
def on_restart(&block)
  @options[:on_restart] << block
end
on_worker_boot(&block) click to toggle source

*Cluster mode only* Code to run when a worker boots to setup the process before booting the app.

This can be called multiple times to add hooks.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 309
def on_worker_boot(&block)
  @options[:before_worker_boot] << block
end
pidfile(path) click to toggle source

Store the pid of the server in the file at path.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 245
def pidfile(path)
  @options[:pidfile] = path
end
port(port) click to toggle source

Define the TCP port to bind to. Use bind for more advanced options.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 204
def port(port)
  @options[:binds] << "tcp://#{Configuration::DefaultTCPHost}:#{port}"
end
preload_app!(answer=true) click to toggle source

*Cluster mode only* Preload the application before starting the workers and setting up the listen ports. This conflicts with using the phased restart feature, you can't use both.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 337
def preload_app!(answer=true)
  @options[:preload_app] = answer
end
prune_bundler(answer=true) click to toggle source

This option is used to allow your app and it's gems to be properly reloaded when not using preload.

When set, if puma detects that it's been invoked in the context of Bundler, it will cleanup the environment and re-run itself outside the Bundler environment, but directly using the files that Bundler has setup.

This means that puma is now decoupled from your Bundler context and when each worker loads, it will be loading a new Bundler context and thus can float around as the release dictates.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 362
def prune_bundler(answer=true)
  @options[:prune_bundler] = answer
end
quiet() click to toggle source

Disable request logging.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 251
def quiet
  @options[:quiet] = true
end
rackup(path) click to toggle source

Load path as a rackup file.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 257
def rackup(path)
  @options[:rackup] = path.to_s
end
restart_command(cmd) click to toggle source

Command to use to restart puma. This should be just how to load puma itself (ie. 'ruby -Ilib bin/puma'), not the arguments to puma, as those are the same as the original process.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 240
def restart_command(cmd)
  @options[:restart_cmd] = cmd
end
ssl_bind(host, port, opts) click to toggle source
# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 282
def ssl_bind(host, port, opts)
  o = [
    "cert=#{opts[:cert]}",
    "key=#{opts[:key]}"
  ]

  @options[:binds] << "ssl://#{host}:#{port}?#{o.join('&')}"
end
state_path(path) click to toggle source

Use path as the file to store the server info state. This is used by pumactl to query and control the server.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 294
def state_path(path)
  @options[:state] = path.to_s
end
stdout_redirect(stdout=nil, stderr=nil, append=false) click to toggle source

Redirect STDOUT and STDERR to files specified.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 262
def stdout_redirect(stdout=nil, stderr=nil, append=false)
  @options[:redirect_stdout] = stdout
  @options[:redirect_stderr] = stderr
  @options[:redirect_append] = append
end
tag(string) click to toggle source

Additional text to display in process listing

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 367
def tag(string)
  @options[:tag] = string
end
tcp_mode() click to toggle source

Run the app as a raw TCP app instead of an HTTP rack app

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 329
def tcp_mode
  @options[:mode] = :tcp
end
threads(min, max) click to toggle source

Configure min to be the minimum number of threads to use to answer requests and max the maximum.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 271
def threads(min, max)
  min = Integer(min)
  max = Integer(max)
  if min > max
    raise "The minimum (#{min}) number of threads must be less than the max (#{max})"
  end

  @options[:min_threads] = min
  @options[:max_threads] = max
end
worker_timeout(timeout) click to toggle source

*Cluster mode only* Set the timeout for workers

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 372
def worker_timeout(timeout)
  @options[:worker_timeout] = timeout
end
workers(count) click to toggle source

*Cluster mode only* How many worker processes to run.

# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 300
def workers(count)
  @options[:workers] = count.to_i
end