impress/lib/deferred_attributes.rb

11 lines
312 B
Ruby
Raw Normal View History

module DeferredAttributes
def attr_deferred(name, &block)
instance_variable_name = "@#{name}"
define_method name do
value = instance_variable_get(instance_variable_name)
return value if value
instance_variable_set(instance_variable_name, self.instance_eval(&block))
end
end
end