aboutsummaryrefslogtreecommitdiffstats
path: root/config/unicorn.rb
blob: 2f9670decbd92251ed79789ec91172b10c031ab4 (plain)
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
29
30
31
32
33
34
35
36
37
_rails_root = File.expand_path("../../", __FILE__)

worker_processes 4
working_directory _rails_root
listen File.join(_rails_root, "tmp", "sockets", "unicorn.sock")

_log_file = File.join(_rails_root, "log", "unicorn.log")
stderr_path _log_file
stdout_path _log_file

preload_app true

before_fork do |server, worker|
  if defined?(ActiveRecord::Base)
    ActiveRecord::Base.connection.disconnect!
  end

  old_pid = "#{server.config[:pid]}.oldbin"
  unless old_pid == server.pid
    begin
      Process.kill :QUIT, File.read(old_pid).to_i
    rescue Errno::ENOENT, Errno::ESRCH
    end
  end
end

after_fork do |server, worker|
  if defined?(ActiveRecord::Base)
    ActiveRecord::Base.establish_connection
  end

  if defined?(ActiveSupport::Cache::DalliStore) && Rails.cache.is_a?(ActiveSupport::Cache::DalliStore)
    Rails.cache.reset
    ObjectSpace.each_object(ActionDispatch::Session::DalliStore) { |obj| obj.reset }
  end
end