Module: Dotenv::SecretsManager

Defined in:
lib/dotenv/secretsmanager.rb,
lib/dotenv/secretsmanager/errors.rb,
lib/dotenv/secretsmanager/railtie.rb,
lib/dotenv/secretsmanager/version.rb,
lib/dotenv/secretsmanager/resolver.rb,
lib/dotenv/secretsmanager/reference.rb,
lib/dotenv/secretsmanager/configuration.rb

Defined Under Namespace

Classes: Configuration, Railtie, Reference, ResolutionError, Resolver

Constant Summary collapse

SKIP_ENV_VAR =
"DOTENV_SECRETSMANAGER_SKIP"
VERSION =
"0.3.0"

Class Method Summary collapse

Class Method Details

.configurationObject



15
16
17
# File 'lib/dotenv/secretsmanager.rb', line 15

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



19
20
21
22
# File 'lib/dotenv/secretsmanager.rb', line 19

def configure
  yield(configuration) if block_given?
  configuration
end

.reset_configuration!Object



24
25
26
# File 'lib/dotenv/secretsmanager.rb', line 24

def reset_configuration!
  @configuration = Configuration.new
end

.resolve!(env = ENV) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/dotenv/secretsmanager.rb', line 28

def resolve!(env = ENV)
  if skip?
    # Delete reference-holding keys rather than leaving them: a raw
    # aws-sm: literal is never a valid value for any consumer, and a
    # present-but-invalid secret (e.g. RAILS_MASTER_KEY) breaks boot.
    # Non-reference inline config is left intact for the build.
    env.keys.each { |key| env.delete(key) if Reference.reference?(env[key]) }
    return env
  end

  Resolver.new(env: env, config: configuration).resolve!
end

.skip?Boolean

Skip resolution entirely. Either the env var or the config flag can request it; resolution happens only when neither does. Read at call time so a railtie firing during an image build honors the env var.

Returns:

  • (Boolean)


44
45
46
# File 'lib/dotenv/secretsmanager.rb', line 44

def skip?
  truthy?(ENV[SKIP_ENV_VAR]) || configuration.skip
end