Guest User

Untitled

a guest
Feb 19th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. # Copyright (c) 2006 Bradley Taylor, bradley@railsmachine.com
  3.  
  4. trap("INT") do
  5. @run = false
  6. end
  7.  
  8. trap("TERM") do
  9. @run = false
  10. end
  11.  
  12. def start_cluster(count)
  13. @servers = []
  14. count.times do |i|
  15. port = 3000 + i
  16. pid = fork do
  17. exec("mongrel_rails start --port #{port.to_s}")
  18. end
  19. puts "mongrel pid is #{pid}"
  20. @servers << {:port => port, :pid => pid}
  21. end
  22. end
  23.  
  24. def restart_child(pid)
  25. server = @servers.find {|s| s[:pid] == pid}
  26. if server
  27. puts "replacing dead doggie"
  28. server[:pid] = fork { exec("mongrel_rails start --port #{server[:port].to_s}") }
  29. puts "mongrel pid is #{server[:pid]}"
  30. end
  31. end
  32.  
  33. start_cluster(2)
  34. @run = true
  35. while @run
  36. pid, status = Process.wait2
  37. restart_child pid if @run
  38. end
Add Comment
Please, Sign In to add comment