personal_deity/skel/bin/god.conf

48 lines
1.3 KiB
Plaintext
Raw Normal View History

2012-07-03 21:54:07 +00:00
# since we're running god via bundler, we need to un-bundle any commands executed
def wrap_command(*args)
"bash -c 'unset BUNDLE_GEMFILE ; unset BUNDLE_BIN_PATH ; cd <%= current_path %> && #{args.join(' ')}'"
end
# a default email contact for when a service dies and needs to be restarted
God.contact(:email) do |c|
c.name = "john"
c.to_email = "email@example.com"
c.delivery_method = :sendmail
end
# example for a thin-powered app, which is what I use the most of
<%= thin_servers %>.times do |port_id|
port = <%= thin_port %> + port_id
God.watch do |w|
# assign all watches to this group so personal_diety can stop/start them all at once
w.group = "<%= application %>"
w.name = "<%= application %>-thin-#{port}"
pid = "<%= shared_path %>/pids/thin.#{port}.pid"
command = "bundle exec thin -P #{pid} -p #{port}"
w.pid_file = pid
w.log = "<%= shared_path %>/god.log"
start = "#{command} -e <%= stage %> -d start"
w.start = wrap_command(start)
w.start_grace = 20.seconds
stop = "#{command} stop"
w.stop = wrap_command(stop)
w.restart = wrap_command("#{stop} && #{start}")
w.restart_grace = 20.seconds
w.start_if do |start|
start.condition(:process_running) do |c|
c.running = false
c.interval = 5.seconds
c.notify = "john"
end
end
end
end