module HerokuSan::Application
Public Instance Methods
ensure_all_workers_running()
click to toggle source
# File lib/heroku_san/application.rb, line 11 def ensure_all_workers_running while true do processes = heroku.get_ps(app).body return if processes.all? { |p| p["state"] == "up" } restart_processes(processes) end end
ensure_one_worker_running(at_least = 1)
click to toggle source
# File lib/heroku_san/application.rb, line 5 def ensure_one_worker_running(at_least = 1) begin web_processes = heroku.get_ps(app).body.select { |p| p["process"] =~ /web\./ } end until restart_processes(web_processes) >= at_least end
Private Instance Methods
restart_processes(web_processes)
click to toggle source
# File lib/heroku_san/application.rb, line 23 def restart_processes(web_processes) up = 0 web_processes.each do |process| case process["state"] when "up" up += 1 when "crashed" heroku.post_ps_restart(app, ps: process["process"]) end end up end