module HerokuConf

Base module for HerokuConf

Constants

DEFAULT_OPTIONS

Public Class Methods

configure!(params = {}) click to toggle source
# File lib/herokuconf.rb, line 14
def configure!(params = {})
  return if ENV['DYNO']
  app, keys, exclude = DEFAULT_OPTIONS.dup.merge!(params).values_at(
    :app, :keys, :exclude
  )
  pairs = config_vars(app)
  pairs.select! { |k, _| keys.include? k } if keys
  pairs.reject! { |k, _| exclude.include? k } if exclude
  pairs.each { |k, v| ENV[k] = v }
end

Private Class Methods

api_key() click to toggle source
# File lib/herokuconf.rb, line 47
def api_key
  @api_key ||= Netrc.read['api.heroku.com'].password
end
client() click to toggle source
# File lib/herokuconf.rb, line 43
def client
  @client ||= Heroku::API.new(api_key: api_key)
end
config_vars(app = nil) click to toggle source
# File lib/herokuconf.rb, line 27
def config_vars(app = nil)
  app ||= parse_app
  client.get_config_vars(app).body
end
parse_app() click to toggle source
# File lib/herokuconf.rb, line 32
def parse_app
  remotes.first[1].split('/').last.split('.').first
end
remotes() click to toggle source
# File lib/herokuconf.rb, line 36
def remotes
  remotes = `git remote -v`.split("\n").map(&:split)
  remotes.select! { |x| x.first == 'heroku' && x.last == '(push)' }
  fail('No app found') unless remotes.size == 1
  remotes
end