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