Sha256: 996f4afc79a53b30fc9a2d4f9597b28fc5861b3c335c780aece5125157e9934f
Contents?: true
Size: 1.94 KB
Versions: 2
Compression:
Stored size: 1.94 KB
Contents
require 'chamber/environmentable' module Chamber module Filters class EnvironmentFilter include Environmentable def initialize(options = {}) self.data = options.fetch(:data) end ### # Internal: Allows the existing environment to be injected into the passed in # hash. The hash that is passed in is *not* modified, instead a new hash is # returned. # # Examples: # # ### # # Injects the current environment variables # # # ENV['LEVEL_ONE_1_LEVEL_TWO_1'] = 'env value 1' # ENV['LEVEL_ONE_1_LEVEL_TWO_2_LEVEL_THREE_1'] = 'env value 2' # # EnvironmentFilter.execute( # level_one_1: { # level_two_1: 'value 1', # level_two_2: { # level_three_1: 'value 2' } } ) # # # => { # 'level_one_1' => { # 'level_two_1' => 'env value 1', # 'level_two_2' => { # 'level_three_1' => 'env value 2', # } # # ### # # Can inject environment variables if said variables are prefixed # # # ENV['PREFIX_LEVEL_TWO_1'] = 'env value 1' # ENV['PREFIX_LEVEL_TWO_2'] = 'env value 2' # # EnvironmentFilter.execute({ # level_two_1: 'value 1', # level_two_2: 'value 2' # }, # ['prefix']) # # # => { # 'level_two_1' => 'env value 1', # 'level_two_2' => 'env value 2', # } # # def self.execute(options = {}) new(options).send(:execute) end protected attr_accessor :data def execute(settings = data, parent_keys = []) with_environment(settings, parent_keys, lambda do |key, value, environment_keys| { key => execute(value, environment_keys) } end, lambda do |key, value, environment_key| { key => (ENV[environment_key] || value) } end) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
chamber-2.8.0 | lib/chamber/filters/environment_filter.rb |
chamber-2.7.1 | lib/chamber/filters/environment_filter.rb |