From 5176868d908b03dbd4d43c7fcc5545bccc2b138a Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 4 Oct 2014 02:14:21 +0000 Subject: examples: add run_once to before_fork hook example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 http://bogomips.org/unicorn-public/m/20141004015707.GA1951@dcvr.yhbt.net.html --- examples/unicorn.conf.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) 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. -- cgit v1.2.3-24-ge0c7