Module: Bzsnippets::Object::EnvAttribute::ClassMethods

Defined in:
lib/bzsnippets/core_ext/object/env_attribute.rb

Instance Method Summary collapse

Instance Method Details

#env_attribute(name, opts = {}) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
# File 'lib/bzsnippets/core_ext/object/env_attribute.rb', line 56

def env_attribute name, opts={}
  opts[:env] ||= lambda{(Rails.env if defined? Rails) || ENV["RAILS_ENV"] || "development"}
  define_method name do
    v = instance_variable_get("@#{name}")
    instance_variable_set("@#{name}", EnvProxy.new(nil, opts.merge(:self => self))) unless v
    instance_variable_get("@#{name}")
  end
  define_method "#{name}=" do |value|
    instance_variable_set("@#{name}", EnvProxy.new(value, opts))
  end
end