class Knowledge::Adapters::Environment

Description

This adapter takes some vars in ENV vars and put it in your project's config.

Usage

@example:

# Define your vars with the name of the variable as key and the name of the env var as value
my_vars = { application_token: 'APPLICATION_TOKEN', aws_secret: 'AWS_SECRET_KEY' }

# Instanciate the adapter
adapter = Knowledge::Adapters::Environment.new(setter: MySetter, variables: my_vars)

# And run it
adapter.run

Attributes

@attr_reader [Class] setter @attr_reader [Hash] variables

Public Class Methods

new(variables:, setter:, params: {}) click to toggle source

Just initializes instance variables with given params

Parameters

@param :variables [Hash] @param :setter [Class] @param :params [Hash] @option :params [Boolean] :raise_on_value_not_found

Calls superclass method Knowledge::Adapters::Base::new
# File lib/knowledge/adapters/environment.rb, line 40
def initialize(variables:, setter:, params: {})
  super

  @raise_not_found = params[:raise_on_value_not_found] || params['raise_on_value_not_found'] || false
end

Public Instance Methods

run() click to toggle source

Runs the actual adapter.

# File lib/knowledge/adapters/environment.rb, line 51
def run
  variables.each do |name_in_project, (name_in_env, default_value)|
    value = @raise_not_found ? ENV.fetch(name_in_env.to_s) : ENV.fetch(name_in_env.to_s) { default_value }

    setter.set(name: name_in_project, value: value)
  end
rescue ::KeyError => e
  raise ::Knowledge::ValueNotFound, "[#{e.class}]: #{e.message}"
end