Class: EnvironmentScoped

Inherits:
Module
  • Object
show all
Defined in:
lib/etna/environment_scoped.rb

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ EnvironmentScoped

Returns a new instance of EnvironmentScoped.



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/etna/environment_scoped.rb', line 2

def initialize(&block)
  environment_class = Class.new do
    class_eval(&block)

    attr_reader :environment
    def initialize(environment)
      @environment = environment
    end
  end

  super() do
    define_method :environment do |env|
      env = env.to_sym
      (@envs ||= {})[env] ||= environment_class.new(env)
    end
  end
end