diff options
author | Eric Wong <e@80x24.org> | 2014-10-04 02:14:21 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2015-04-22 18:55:32 +0000 |
commit | 5176868d908b03dbd4d43c7fcc5545bccc2b138a (patch) | |
tree | a974d432c988ac98308c53a12a9a15fea2ed72d0 | |
parent | 2bb8cc404232254af0d74f2dd3dec87d406fd764 (diff) | |
download | unicorn-5176868d908b03dbd4d43c7fcc5545bccc2b138a.tar.gz |
There may be code in a before_fork hook which should run only once, document an example using a guard variable since it may not be immediately obvious to all users. Inspired-by: BrĂ¡ulio Bhavamitra <braulio@eita.org.br> http://bogomips.org/unicorn-public/m/20141004015707.GA1951@dcvr.yhbt.net.html
-rw-r--r-- | examples/unicorn.conf.rb | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/examples/unicorn.conf.rb b/examples/unicorn.conf.rb index 9dce58a..4b28a5a 100644 --- a/examples/unicorn.conf.rb +++ b/examples/unicorn.conf.rb @@ -54,12 +54,23 @@ GC.respond_to?(:copy_on_write_friendly=) and # fast LAN. check_client_connection false +# local variable to guard against running a hook multiple times +run_once = true + before_fork do |server, worker| # the following is highly recomended for Rails + "preload_app true" # as there's no need for the master process to hold a connection defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! + # Occasionally, it may be necessary to run non-idempotent code in the + # master before forking. Keep in mind the above disconnect! example + # is idempotent and does not need a guard. + if run_once + # do_something_once_here ... + run_once = false # prevent from firing again + end + # The following is only recommended for memory/DB-constrained # installations. It is not needed if your system can house # twice as many worker_processes as you have configured. |