public
Created

TraceView and the Unicorn Webserver: Disconnect/Reconnect Example

  • Download Gist
unicorn.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
timeout 15
preload_app true
 
before_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end
 
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
 
defined?(::Oboe) and
::Oboe.disconnect!
end
 
after_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
end
 
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
 
defined?(::Oboe) and
::Oboe.reconnect!
end

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.