Class: Puma::Configuration::DSL
- Inherits:
-
Object
- Object
- Puma::Configuration::DSL
- Defined in:
- lib/puma/configuration.rb
Overview
The methods that are available for use inside the config file.
Instance Method Summary collapse
- #_load_from(path) ⇒ Object
-
#activate_control_app(url = "auto", opts = nil) ⇒ Object
Start the Puma control rack app on
url
. -
#after_worker_boot(&block) ⇒ Object
*Cluster mode only* Code to run when a worker boots to setup the process after booting the app.
-
#app(obj = nil, &block) ⇒ Object
Use
obj
orblock
as the Rack app. -
#bind(url) ⇒ Object
Bind the server to
url
. -
#daemonize(which = true) ⇒ Object
Daemonize the server into the background.
-
#directory(dir) ⇒ Object
The directory to operate out of.
-
#drain_on_shutdown(which = true) ⇒ Object
When shutting down, drain the accept socket of pending connections and proces them.
-
#environment(environment) ⇒ Object
Set the environment in which the Rack’s app will run.
-
#initialize(options) ⇒ DSL
constructor
A new instance of DSL.
-
#lowlevel_error_handler(obj = nil, &block) ⇒ Object
Use
obj
orblock
as the low lever error handler. -
#on_restart(&block) ⇒ Object
Code to run before doing a restart.
-
#on_worker_boot(&block) ⇒ Object
*Cluster mode only* Code to run when a worker boots to setup the process before booting the app.
-
#pidfile(path) ⇒ Object
Store the pid of the server in the file at
path
. -
#port(port) ⇒ Object
Define the TCP port to bind to.
-
#preload_app!(answer = true) ⇒ Object
*Cluster mode only* Preload the application before starting the workers and setting up the listen ports.
-
#prune_bundler(answer = true) ⇒ Object
This option is used to allow your app and it’s gems to be properly reloaded when not using preload.
-
#quiet ⇒ Object
Disable request logging.
-
#rackup(path) ⇒ Object
Load
path
as a rackup file. -
#restart_command(cmd) ⇒ Object
Command to use to restart puma.
- #ssl_bind(host, port, opts) ⇒ Object
-
#state_path(path) ⇒ Object
Use
path
as the file to store the server info state. -
#stdout_redirect(stdout = nil, stderr = nil, append = false) ⇒ Object
Redirect STDOUT and STDERR to files specified.
-
#tag(string) ⇒ Object
Additional text to display in process listing.
-
#tcp_mode ⇒ Object
Run the app as a raw TCP app instead of an HTTP rack app.
-
#threads(min, max) ⇒ Object
Configure
min
to be the minimum number of threads to use to answer requests andmax
the maximum. -
#worker_timeout(timeout) ⇒ Object
*Cluster mode only* Set the timeout for workers.
-
#workers(count) ⇒ Object
*Cluster mode only* How many worker processes to run.
Constructor Details
#initialize(options) ⇒ DSL
Returns a new instance of DSL.
159 160 161 |
# File 'lib/puma/configuration.rb', line 159 def initialize() @options = end |
Instance Method Details
#_load_from(path) ⇒ Object
163 164 165 |
# File '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) ⇒ Object
Start the Puma control rack app on url
. This app can be communicated with to control the main server.
181 182 183 184 185 186 187 188 189 190 191 192 193 |
# File '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) ⇒ Object
*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.
318 319 320 |
# File 'lib/puma/configuration.rb', line 318 def after_worker_boot(&block) @options[:after_worker_boot] << block end |
#app(obj = nil, &block) ⇒ Object
Use obj
or block
as the Rack app. This allows a config file to be the app itself.
170 171 172 173 174 175 176 |
# File '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) ⇒ Object
Bind the server to url
. tcp:// and unix:// are the only accepted protocols.
198 199 200 |
# File 'lib/puma/configuration.rb', line 198 def bind(url) @options[:binds] << url end |
#daemonize(which = true) ⇒ Object
Daemonize the server into the background. Highly suggest that this be combined with pidfile
and stdout_redirect
.
210 211 212 |
# File 'lib/puma/configuration.rb', line 210 def daemonize(which=true) @options[:daemon] = which end |
#directory(dir) ⇒ Object
The directory to operate out of.
323 324 325 326 |
# File '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) ⇒ Object
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.
218 219 220 |
# File 'lib/puma/configuration.rb', line 218 def drain_on_shutdown(which=true) @options[:drain_on_shutdown] = which end |
#environment(environment) ⇒ Object
Set the environment in which the Rack’s app will run.
223 224 225 |
# File 'lib/puma/configuration.rb', line 223 def environment(environment) @options[:environment] = environment end |
#lowlevel_error_handler(obj = nil, &block) ⇒ Object
Use obj
or block
as the low lever error handler. This allows a config file to change the default error on the server.
344 345 346 347 348 |
# File '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) ⇒ Object
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.
232 233 234 |
# File 'lib/puma/configuration.rb', line 232 def on_restart(&block) @options[:on_restart] << block end |
#on_worker_boot(&block) ⇒ Object
*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.
309 310 311 |
# File 'lib/puma/configuration.rb', line 309 def on_worker_boot(&block) @options[:before_worker_boot] << block end |
#pidfile(path) ⇒ Object
Store the pid of the server in the file at path
.
245 246 247 |
# File 'lib/puma/configuration.rb', line 245 def pidfile(path) @options[:pidfile] = path end |
#port(port) ⇒ Object
Define the TCP port to bind to. Use bind
for more advanced options.
204 205 206 |
# File 'lib/puma/configuration.rb', line 204 def port(port) @options[:binds] << "tcp://#{Configuration::DefaultTCPHost}:#{port}" end |
#preload_app!(answer = true) ⇒ Object
*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.
337 338 339 |
# File 'lib/puma/configuration.rb', line 337 def preload_app!(answer=true) @options[:preload_app] = answer end |
#prune_bundler(answer = true) ⇒ Object
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.
362 363 364 |
# File 'lib/puma/configuration.rb', line 362 def prune_bundler(answer=true) @options[:prune_bundler] = answer end |
#quiet ⇒ Object
Disable request logging.
251 252 253 |
# File 'lib/puma/configuration.rb', line 251 def quiet @options[:quiet] = true end |
#rackup(path) ⇒ Object
Load path
as a rackup file.
257 258 259 |
# File 'lib/puma/configuration.rb', line 257 def rackup(path) @options[:rackup] = path.to_s end |
#restart_command(cmd) ⇒ Object
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.
240 241 242 |
# File 'lib/puma/configuration.rb', line 240 def restart_command(cmd) @options[:restart_cmd] = cmd end |
#ssl_bind(host, port, opts) ⇒ Object
282 283 284 285 286 287 288 289 |
# File '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) ⇒ Object
Use path
as the file to store the server info state. This is used by pumactl to query and control the server.
294 295 296 |
# File 'lib/puma/configuration.rb', line 294 def state_path(path) @options[:state] = path.to_s end |
#stdout_redirect(stdout = nil, stderr = nil, append = false) ⇒ Object
Redirect STDOUT and STDERR to files specified.
262 263 264 265 266 |
# File '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) ⇒ Object
Additional text to display in process listing
367 368 369 |
# File 'lib/puma/configuration.rb', line 367 def tag(string) @options[:tag] = string end |
#tcp_mode ⇒ Object
Run the app as a raw TCP app instead of an HTTP rack app
329 330 331 |
# File 'lib/puma/configuration.rb', line 329 def tcp_mode @options[:mode] = :tcp end |
#threads(min, max) ⇒ Object
Configure min
to be the minimum number of threads to use to answer requests and max
the maximum.
271 272 273 274 275 276 277 278 279 280 |
# File '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) ⇒ Object
*Cluster mode only* Set the timeout for workers
372 373 374 |
# File 'lib/puma/configuration.rb', line 372 def worker_timeout(timeout) @options[:worker_timeout] = timeout end |
#workers(count) ⇒ Object
*Cluster mode only* How many worker processes to run.
300 301 302 |
# File 'lib/puma/configuration.rb', line 300 def workers(count) @options[:workers] = count.to_i end |