class Escobar::Heroku::App
Class representing a heroku application
Attributes
client[R]
id[R]
Public Class Methods
new(client, id)
click to toggle source
# File lib/escobar/heroku/app.rb, line 6 def initialize(client, id) @id = id @client = client end
Public Instance Methods
build_request_for(pipeline)
click to toggle source
# File lib/escobar/heroku/app.rb, line 80 def build_request_for(pipeline) Escobar::Heroku::BuildRequest.new(pipeline, id) end
cache_key()
click to toggle source
# File lib/escobar/heroku/app.rb, line 51 def cache_key "escobar-app-#{id}" end
config_vars()
click to toggle source
# File lib/escobar/heroku/app.rb, line 39 def config_vars @config_vars ||= Escobar::Heroku::ConfigVars.new(client, id) end
current_release_ref()
click to toggle source
# File lib/escobar/heroku/app.rb, line 31 def current_release_ref releases.first.ref end
dashboard_url()
click to toggle source
# File lib/escobar/heroku/app.rb, line 47 def dashboard_url "https://dashboard.heroku.com/apps/#{name}" end
direct_to_drain?()
click to toggle source
# File lib/escobar/heroku/app.rb, line 68 def direct_to_drain? !log_drains.is_a?(Array) end
drain()
click to toggle source
# File lib/escobar/heroku/app.rb, line 84 def drain @drain ||= log_drains.find do |drain| drain["url"].match(heroku_drain_url_pattern) end end
drain_token()
click to toggle source
# File lib/escobar/heroku/app.rb, line 72 def drain_token @drain_token ||= drain && drain["token"] end
dynos()
click to toggle source
# File lib/escobar/heroku/app.rb, line 35 def dynos @dynos ||= Escobar::Heroku::Dynos.new(client, id) end
heroku_drain_url_pattern()
click to toggle source
# File lib/escobar/heroku/app.rb, line 90 def heroku_drain_url_pattern %r{forward\.log\.herokai\.com:9999|logs\.herokai\.com\/logs} end
info()
click to toggle source
# File lib/escobar/heroku/app.rb, line 15 def info @info ||= heroku.get("/apps/#{id}") end
locked?()
click to toggle source
# File lib/escobar/heroku/app.rb, line 60 def locked? response = heroku.get("/apps/#{id}/config-vars") response["id"] == "two_factor" rescue Escobar::Client::HTTPError => e response = JSON.parse(e.response.body) response["id"] == "two_factor" end
log_drains()
click to toggle source
# File lib/escobar/heroku/app.rb, line 43 def log_drains @log_drains ||= heroku.get("/apps/#{id}/log-drains") end
log_url()
click to toggle source
# File lib/escobar/heroku/app.rb, line 76 def log_url @log_url ||= "#{dashboard_url}/logs" end
name()
click to toggle source
# File lib/escobar/heroku/app.rb, line 11 def name info["name"] end
preauth(second_factor)
click to toggle source
Accepts either google authenticator or yubikey second_factor formatting
# File lib/escobar/heroku/app.rb, line 56 def preauth(second_factor) heroku.put("/apps/#{id}/pre-authorizations", {}, second_factor).none? end
releases()
click to toggle source
# File lib/escobar/heroku/app.rb, line 25 def releases @releases ||= releases_json.map do |release| Escobar::Heroku::Release.new(client, id, nil, release["id"]) end end
releases_json()
click to toggle source
# File lib/escobar/heroku/app.rb, line 19 def releases_json @releases_json ||= heroku.get_range( "/apps/#{id}/releases", "version; order=desc,max=25;" ) end
Private Instance Methods
heroku()
click to toggle source
# File lib/escobar/heroku/app.rb, line 96 def heroku client.heroku end