Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env ruby
- # Copyright (c) 2006 Bradley Taylor, bradley@railsmachine.com
- trap("INT") do
- @run = false
- end
- trap("TERM") do
- @run = false
- end
- def start_cluster(count)
- @servers = []
- count.times do |i|
- port = 3000 + i
- pid = fork do
- exec("mongrel_rails start --port #{port.to_s}")
- end
- puts "mongrel pid is #{pid}"
- @servers << {:port => port, :pid => pid}
- end
- end
- def restart_child(pid)
- server = @servers.find {|s| s[:pid] == pid}
- if server
- puts "replacing dead doggie"
- server[:pid] = fork { exec("mongrel_rails start --port #{server[:port].to_s}") }
- puts "mongrel pid is #{server[:pid]}"
- end
- end
- start_cluster(2)
- @run = true
- while @run
- pid, status = Process.wait2
- restart_child pid if @run
- end
Add Comment
Please, Sign In to add comment