Skip to content

Instantly share code, notes, and snippets.

@baldowl baldowl/god.rb forked from defunkt/god.rb
Created Jun 24, 2010

Embed
What would you like to do?
How to avoid untracked rake processes
rails_root = "/data/github/current"
20.times do |num|
God.watch do |w|
w.dir = rails_root
w.env = {'RAILS_ENV' => 'production'}
w.name = "dj-#{num}"
w.group = 'dj'
w.interval = 30.seconds
w.start = "rake jobs:work"
w.stop_timeout = 1.minute
w.uid = 'git'
w.gid = 'git'
# retart if memory gets too high
w.transition(:up, :restart) do |on|
on.condition(:memory_usage) do |c|
c.above = 300.megabytes
c.times = 2
end
end
# determine the state on startup
w.transition(:init, { true => :up, false => :start }) do |on|
on.condition(:process_running) do |c|
c.running = true
end
end
# determine when process has finished starting
w.transition([:start, :restart], :up) do |on|
on.condition(:process_running) do |c|
c.running = true
c.interval = 5.seconds
end
# failsafe
on.condition(:tries) do |c|
c.times = 5
c.transition = :start
c.interval = 5.seconds
end
end
# start if process is not running
w.transition(:up, :start) do |on|
on.condition(:process_running) do |c|
c.running = false
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.