Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save International/80213fe66caac041e6cb to your computer and use it in GitHub Desktop.
Save International/80213fe66caac041e6cb to your computer and use it in GitHub Desktop.
# config/unicorn.rb
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
timeout 60
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
if defined?(Resque)
Resque.redis.quit
Rails.logger.info('Disconnected from Redis')
end
if defined?(ActiveRecord::Base)
ActiveRecord::Base.connection_proxy.instance_variable_get(:@shards).each do |shard, connection_pool|
connection_pool.disconnect!
end
ActiveRecord::Base.connection.disconnect!
end
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
if defined?(Resque)
Resque.redis = ENV['REDISCLOUD_URL']
Rails.logger.info('Connected to Redis')
end
if defined?(ActiveRecord::Base)
ActiveRecord::Base.establish_connection
ActiveRecord::Base.connection_proxy.instance_variable_get(:@shards).each {|k,v| v.clear_reloadable_connections! }
end
# Octopus.config['production']['master'] = ActiveRecord::Base.connection.config
# ActiveRecord::Base.connection.initialize_shards(Octopus.config)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment