PageRenderTime 50ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/config/unicorn.rb

https://github.com/christianhellsten/aktagon-snippets
Ruby | 42 lines | 22 code | 8 blank | 12 comment | 3 complexity | 9f659a4de88502b5569150d526a9e249 MD5 | raw file
  1. worker_processes 2
  2. user 'deploy', 'deploy'
  3. preload_app true
  4. timeout 30
  5. working_directory "/var/www/snippets/current"
  6. listen "/tmp/snippets.socket", :backlog => 64
  7. pid '/tmp/snippets.pid'
  8. stderr_path "/var/www/snippets/current/log/unicorn.stderr.log"
  9. stdout_path "/var/www/snippets/current/log/unicorn.stdout.log"
  10. before_fork do |server, worker|
  11. # the following is highly recomended for Rails + "preload_app true"
  12. # as there's no need for the master process to hold a connection
  13. #if defined?(ActiveRecord::Base)
  14. #ActiveRecord::Base.connection.disconnect!
  15. #end
  16. # Before forking, kill the master process that belongs to the .oldbin PID.
  17. # This enables 0 downtime deploys.
  18. old_pid = "#{server.config[:pid]}.oldbin"
  19. if File.exists?(old_pid) && server.pid != old_pid
  20. begin
  21. Process.kill("QUIT", File.read(old_pid).to_i)
  22. rescue Errno::ENOENT, Errno::ESRCH
  23. # someone else did our job for us
  24. end
  25. end
  26. end
  27. after_fork do |server, worker|
  28. # the following is *required* for Rails + "preload_app true",
  29. #if defined?(ActiveRecord::Base)
  30. #ActiveRecord::Base.establish_connection
  31. #end
  32. child_pid = server.config[:pid].sub('.pid', ".#{worker.nr}.pid")
  33. system("echo #{Process.pid} > #{child_pid}")
  34. end