Module: Vault::Config

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

Constant Summary collapse

@@defaults =
{}
@@shared =
{}

Class Method Summary collapse

Class Method Details

.[](name) ⇒ String

Get a Config value

This is the preferred and uniform way to access config vars because defaults and shared config are included in the lookup

Uses defaults and shared if available. Converts upper-case ENV var names to lower-case default names.

Order of precedence is: 1) app's local ENV 2) shared config vars 3) default values

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.



29
30
31
32
33
# File 'lib/vault-tools/config.rb', line 29

def self.[](name)
  var_name = name.to_s.upcase
  default_name = name.to_s.downcase.to_sym
  ENV[var_name] || @@shared[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



105
106
107
# File 'lib/vault-tools/config.rb', line 105

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



96
97
98
# File 'lib/vault-tools/config.rb', line 96

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.



149
150
151
# File 'lib/vault-tools/config.rb', line 149

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.



158
159
160
# File 'lib/vault-tools/config.rb', line 158

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.



121
122
123
124
# File 'lib/vault-tools/config.rb', line 121

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



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

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

.defaultsHash

Get all the defaults

Returns:

  • (Hash)

    The current set of defaults



62
63
64
# File 'lib/vault-tools/config.rb', line 62

def self.defaults
  @@defaults
end

.enable_ssl?Bool

Enforce HTTPS connections in the web API?

Returns:

  • (Bool)

    True if SSL is enforced, otherwise false.



129
130
131
# File 'lib/vault-tools/config.rb', line 129

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.



47
48
49
# File 'lib/vault-tools/config.rb', line 47

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.



72
73
74
# File 'lib/vault-tools/config.rb', line 72

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

.fetch(name, fallback) ⇒ String

Return a fallback value if a given Config var is not set

name param.

Parameters:

  • name (String)

    The name of the environment variable.

  • fallback (String)

    The value to return if there is no value for the

Returns:

  • (String)

    Either the set Config var value or the fallback value



191
192
193
# File 'lib/vault-tools/config.rb', line 191

def self.fetch(name, fallback)
  self[name].nil? ? fallback : self[name]
end

.int(name) ⇒ Integer

An environment variable converted to a Integer.

Parameters:

  • name (String)

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

Returns:

  • (Integer)

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



139
140
141
# File 'lib/vault-tools/config.rb', line 139

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

.portInteger

The port to listen on for web requests.

Returns:

  • (Integer)

    The port to listen on for web requests.



112
113
114
# File 'lib/vault-tools/config.rb', line 112

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.



80
81
82
# File 'lib/vault-tools/config.rb', line 80

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

.reset!Object

Reset defaults and shared values



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

def self.reset!
  @@defaults = {}
  @@shared   = {}
end

.sidekiq_concurrencyInteger

The number of threads to use in Sidekiq workers.

Returns:

  • (Integer)

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



181
182
183
# File 'lib/vault-tools/config.rb', line 181

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.



88
89
90
# File 'lib/vault-tools/config.rb', line 88

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.



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

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

.uri(name) ⇒ Object



173
174
175
# File 'lib/vault-tools/config.rb', line 173

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