Method: Module#let

Defined in:
lib/core/facets/module/let.rb

#let(var, &block) ⇒ Object

Create a memoized method. This method has been popularized by RSpec.

class LetExample
  let(:seed) { rand }
end

eg = LetExample.new
eg.seed == eg.seed

CREDIT: Howard Yeh

Uncommon:

  • require ‘facets/module/let’



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/core/facets/module/let.rb', line 17

def let(var,&block)
  name = "@#{var}"
  self.class_eval do
    define_method(var) do
      if instance_variable_defined?(name)
        instance_variable_get(name)
      else
        val = self.instance_eval(&block)
        instance_variable_set(name,val)
      end
    end
  end
end