class Puma::Configuration::DSL
The methods that are available for use inside the config file.
Public Class Methods
# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 159 def initialize(options) @options = options end
Public Instance Methods
# 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
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
*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
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 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 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
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
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
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
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
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
*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
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
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
*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
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
Disable request logging.
# File vendor/gems/puma-2.8.2-java/lib/puma/configuration.rb, line 251 def quiet @options[:quiet] = true end
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
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
# 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
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
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
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
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
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
*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
*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