Module: Vault::Config

Defined in:
lib/vault-tools/config.rb

Constant Summary collapse

@@defaults =
{}

Class Method Summary collapse

Class Method Details

.[](name) ⇒ String

Get a Config value Uses defaults if available. Converts upper-case ENV var names to lower-case default names.

Config[:foo] == nil

Config.default(:foo, 'bar') Config[:foo] == 'bar'

ENV['FOO'] = 'baz' Config[:foo] == 'baz'

Parameters:

  • key (Symbol)

    The lower-case name of the ENV value

Returns:

  • (String)

    The value of the ENV value or default.



56
57
58
59
60
# File 'lib/vault-tools/config.rb', line 56

def self.[](name)
  var_name = name.to_s.upcase
  default_name = name.to_s.downcase.to_sym
  ENV[var_name] || @@defaults[default_name]
end

.app_deployString

The APP_DEPLOY env var is used to identify which deploy of the codebase is running in librato. This usually matches the name of the environment such as local, production, staging, etc.

Returns:

  • (String)

    The deploy/environment of the app



101
102
103
# File 'lib/vault-tools/config.rb', line 101

def self.app_deploy
  env("APP_DEPLOY")
end

.app_nameString

The APP_NAME env var is used to identify which codebase is running in librato. This usually matches the name of the repository.

Returns:

  • (String)

    The name of the app



92
93
94
# File 'lib/vault-tools/config.rb', line 92

def self.app_name
  env("APP_NAME")
end

.array(name) ⇒ Array

Comma-separated words converted to an array.

Parameters:

  • name (String)

    The name of the environment variable to fetch an array for.

Returns:

  • (Array)

    An array of values.

Raises:

  • (RuntimeError)

    Raised if the environment variable is not defined.



145
146
147
# File 'lib/vault-tools/config.rb', line 145

def self.array(name)
  env(name).to_s.split(',')
end

.bool?(name) ⇒ bool

An environment variable converted to a bool.

Parameters:

  • name (String)

    The name of the environment variable to fetch a boolean for.

Returns:

  • (bool)

    True if the value is true, otherwise false.



154
155
156
# File 'lib/vault-tools/config.rb', line 154

def self.bool?(name)
  self[name] == 'true'
end

.database_url(kind = '') ⇒ Object

The database URL from the environment.

Parameters:

  • kind (String) (defaults to: '')

    Optionally, the leading name of *_DATABASE_URL environment variable. Defaults to DATABASE_URL.

Raises:

  • (RuntimeError)

    Raised if the environment variable is not defined.



117
118
119
120
# File 'lib/vault-tools/config.rb', line 117

def self.database_url(kind = '')
  kind = "#{kind}_".upcase unless kind.empty?
  env!("#{kind}DATABASE_URL")
end

.default(key, value) ⇒ String

Set a default Defaults are supplied when accessing via Config[:varname]

Parameters:

  • key (Symbol/String)

    The lower-case name of the default

Returns:

  • (String)

    The value of the default



32
33
34
# File 'lib/vault-tools/config.rb', line 32

def self.default(key, value)
  @@defaults[key.to_sym] = value
end

.defaultsHash

Get all the defaults

Returns:

  • (Hash)

    The current set of defaults



38
39
40
# File 'lib/vault-tools/config.rb', line 38

def self.defaults
  @@defaults
end

.enable_ssl?Bool

Enforce HTTPS connections in the web API?

Returns:

  • (Bool)

    True if SSL is enforced, otherwise false.



125
126
127
# File 'lib/vault-tools/config.rb', line 125

def self.enable_ssl?
  !bool?('VAULT_TOOLS_DISABLE_SSL')
end

.env(name) ⇒ String

An environment variable.

Parameters:

  • name (String)

    The name of the environment variable to fetch a value for.

Returns:

  • (String)

    The value of the environment variable or nil if no match is available.



23
24
25
# File 'lib/vault-tools/config.rb', line 23

def self.env(name)
  self[name]
end

.env!(name) ⇒ String

An environment variable.

Parameters:

  • name (String)

    The name of the environment variable to fetch a value for.

Returns:

  • (String)

    The value of the environment variable.

Raises:

  • (RuntimeError)

    Raised if the environment variable is not defined.



68
69
70
# File 'lib/vault-tools/config.rb', line 68

def self.env!(name)
  self[name] || raise("missing #{name}")
end

.int(name) ⇒ Fixnum

An environment variable converted to a Fixnum.

Parameters:

  • name (String)

    The name of the environment variable to fetch a Fixnum for.

Returns:

  • (Fixnum)

    The number or nil if the value couldn't be coerced to a Fixnum.



135
136
137
# File 'lib/vault-tools/config.rb', line 135

def self.int(name)
  self[name] && self[name].to_i
end

.portFixnum

The port to listen on for web requests.

Returns:

  • (Fixnum)

    The port to listen on for web requests.



108
109
110
# File 'lib/vault-tools/config.rb', line 108

def self.port
  env!("PORT").to_i
end

.production?Bool

The RACK_ENV environment variable is used to determine whether the service is in production mode or not.

Returns:

  • (Bool)

    True if the service is in production mode.



76
77
78
# File 'lib/vault-tools/config.rb', line 76

def self.production?
  self['RACK_ENV'] == 'production'
end

.remote_env(app, name) ⇒ String

An environment variable from another app.

Parameters:

  • app (String)

    The name of the app to get the value from.

  • name (String)

    The name of the environment variable to fetch a value for.

Returns:

  • (String)

    The value of an environment variable from another Heroku app or nil if no match is available.



12
13
14
15
# File 'lib/vault-tools/config.rb', line 12

def self.remote_env(app, name)
  heroku = Heroku::API.new
  heroku.get_config_vars(app).body[name]
end

.sidekiq_concurrencyFixnum

The number of threads to use in Sidekiq workers.

Returns:

  • (Fixnum)

    The number of threads from the SIDEKIQ_CONCURRENCY environment variable or 25 if no variable is defined.



177
178
179
# File 'lib/vault-tools/config.rb', line 177

def self.sidekiq_concurrency
  int('SIDEKIQ_CONCURRENCY') || 25
end

.test?Bool

The RACK_ENV environment variable is used to determine whether the service is in test mode or not.

Returns:

  • (Bool)

    True if the service is in test mode.



84
85
86
# File 'lib/vault-tools/config.rb', line 84

def self.test?
  self['RACK_ENV'] == 'test'
end

.time(name) ⇒ Time

An environment variable converted to a time.

Parameters:

  • name (String|Symbol)

    The name of the environment variable to fetch a boolean for.

Returns:

  • (Time)

    Time if the value is parseable, otherwise false.



163
164
165
166
167
# File 'lib/vault-tools/config.rb', line 163

def self.time(name)
  if self[name]
    Time.parse(self[name]) rescue Time.utc(*self[name].split('-'))
  end
end

.uri(name) ⇒ Object



169
170
171
# File 'lib/vault-tools/config.rb', line 169

def self.uri(name)
  self[name] && URI.parse(self[name])
end