mirror of
https://github.com/puma/puma.git
synced 2022-11-09 13:48:40 -05:00
added after worker boot hook
This commit is contained in:
parent
e9bc323a83
commit
e5150f0792
4 changed files with 26 additions and 5 deletions
|
@ -113,6 +113,15 @@
|
||||||
# puts 'On worker boot...'
|
# puts 'On worker boot...'
|
||||||
# end
|
# end
|
||||||
|
|
||||||
|
# Code to run when a worker boots to setup the process after booting
|
||||||
|
# the app.
|
||||||
|
#
|
||||||
|
# This can be called multiple times to add hooks.
|
||||||
|
#
|
||||||
|
# after_worker_boot do
|
||||||
|
# puts 'On worker boot...'
|
||||||
|
# end
|
||||||
|
|
||||||
# === Puma control rack application ===
|
# === Puma control rack application ===
|
||||||
|
|
||||||
# Start the puma control rack application on “url”. This application can
|
# Start the puma control rack application on “url”. This application can
|
||||||
|
|
|
@ -99,7 +99,8 @@ module Puma
|
||||||
:binds => [],
|
:binds => [],
|
||||||
:workers => 0,
|
:workers => 0,
|
||||||
:daemon => false,
|
:daemon => false,
|
||||||
:worker_boot => []
|
:before_worker_boot => [],
|
||||||
|
:after_worker_boot => []
|
||||||
}
|
}
|
||||||
|
|
||||||
@parser = OptionParser.new do |o|
|
@parser = OptionParser.new do |o|
|
||||||
|
@ -220,7 +221,7 @@ module Puma
|
||||||
|
|
||||||
cfg = @config.dup
|
cfg = @config.dup
|
||||||
|
|
||||||
[ :logger, :worker_boot, :on_restart ].each { |o| cfg.options.delete o }
|
[ :logger, :before_worker_boot, :after_worker_boot, :on_restart ].each { |o| cfg.options.delete o }
|
||||||
|
|
||||||
state["config"] = cfg
|
state["config"] = cfg
|
||||||
|
|
||||||
|
|
|
@ -90,6 +90,7 @@ module Puma
|
||||||
pid = fork { worker(idx, upgrade, master) }
|
pid = fork { worker(idx, upgrade, master) }
|
||||||
@cli.debug "Spawned worker: #{pid}"
|
@cli.debug "Spawned worker: #{pid}"
|
||||||
@workers << Worker.new(idx, pid, @phase)
|
@workers << Worker.new(idx, pid, @phase)
|
||||||
|
@options[:after_worker_boot].each { |h| h.call }
|
||||||
end
|
end
|
||||||
|
|
||||||
if diff > 0
|
if diff > 0
|
||||||
|
@ -186,7 +187,7 @@ module Puma
|
||||||
|
|
||||||
# Invoke any worker boot hooks so they can get
|
# Invoke any worker boot hooks so they can get
|
||||||
# things in shape before booting the app.
|
# things in shape before booting the app.
|
||||||
hooks = @options[:worker_boot]
|
hooks = @options[:before_worker_boot]
|
||||||
hooks.each { |h| h.call(index) }
|
hooks.each { |h| h.call(index) }
|
||||||
|
|
||||||
server = start_server
|
server = start_server
|
||||||
|
|
|
@ -21,7 +21,8 @@ module Puma
|
||||||
@options[:mode] ||= :http
|
@options[:mode] ||= :http
|
||||||
@options[:binds] ||= []
|
@options[:binds] ||= []
|
||||||
@options[:on_restart] ||= []
|
@options[:on_restart] ||= []
|
||||||
@options[:worker_boot] ||= []
|
@options[:before_worker_boot] ||= []
|
||||||
|
@options[:after_worker_boot] ||= []
|
||||||
@options[:worker_timeout] ||= DefaultWorkerTimeout
|
@options[:worker_timeout] ||= DefaultWorkerTimeout
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -306,7 +307,16 @@ module Puma
|
||||||
# This can be called multiple times to add hooks.
|
# This can be called multiple times to add hooks.
|
||||||
#
|
#
|
||||||
def on_worker_boot(&block)
|
def on_worker_boot(&block)
|
||||||
@options[:worker_boot] << block
|
@options[:before_worker_boot] << block
|
||||||
|
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.
|
||||||
|
#
|
||||||
|
def after_worker_boot(&block)
|
||||||
|
@options[:after_worker_boot] << block
|
||||||
end
|
end
|
||||||
|
|
||||||
# The directory to operate out of.
|
# The directory to operate out of.
|
||||||
|
|
Loading…
Reference in a new issue