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