In Files

Files

Lazy

Allows attributes to be declared as lazy, meaning that they won’t be computed until they are asked for.

Works by delegating each lazy_reader to a cached lazy_source method.

class Person

lazy_reader :eyes

def lazy_source
  OpenStruct.new(:eyes => 2)
end

end

>> Person.new.eyes

> 2

Public Class Methods

extended(klass) click to toggle source
# File lib/grit/lazy.rb, line 19
def self.extended(klass)
  klass.send(:attr_writer, :lazy_source)
end

Public Instance Methods

lazy_reader(*args) click to toggle source
# File lib/grit/lazy.rb, line 23
def lazy_reader(*args)
  args.each do |arg|
    ivar = "@#{arg}"
    define_method(arg) do
      if instance_variable_defined?(ivar)
        val = instance_variable_get(ivar)
        return val if val
      end
      instance_variable_set(ivar, (@lazy_source ||= lazy_source).send(arg))
    end
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.