class Module
Core extension for Module
Private Instance Methods
attr_lazy_reader(sym, &block)
click to toggle source
define lazily initialized read-only attribute.
# File lib/attr_lazy_reader.rb, line 6 def attr_lazy_reader(sym, &block) raise ArgumentError, 'attr_lazy_reader requires block' unless block raise NameError, "invalid attribute name: #{sym}" unless sym =~ /^[_A-Za-z]\w*$/ local_sym = :"@#{sym}" define_method sym do unless instance_variable_defined?(local_sym) instance_variable_set local_sym, instance_eval(&block) end instance_variable_get local_sym end end