Module: Once::ClassMethods

Defined in:
lib/chem/utils/once.rb

Instance Method Summary collapse

Instance Method Details

#once(*ids) ⇒ Object

:nodoc:



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/chem/utils/once.rb', line 9

def once(*ids) # :nodoc:
  for id in ids
  module_eval "    alias_method :__\#{id.to_i}__, :\#{id.to_s}\n    private :__\#{id.to_i}__\n    def \#{id.to_s}(*args, &block)\n      if defined? @__\#{id.to_i}__\n        @__\#{id.to_i}__\n      elsif ! self.frozen?\n        @__\#{id.to_i}__ ||= __\#{id.to_i}__(*args, &block)\n      else\n        __\#{id.to_i}__(*args, &block)\n      end\n    end\n  end;\n  end\nend\n", __FILE__, __LINE__