lib/lazy_const.rb in lazy_const-0.1.2 vs lib/lazy_const.rb in lazy_const-0.1.3

- old
+ new

@@ -1,21 +1,25 @@ module LazyConst CACHE = {} + def meta_class + @meta_class ||= class << self; self end + end + def lazy_const(name, &block) raise Error("lazy_const requires a block") unless block_given? LazyConst::CACHE["#{self.name}.#{name}"] = nil - define_singleton_method name do + meta_class.send(:define_method, name) do LazyConst::CACHE["#{self.name}.#{name}"] ||= block.call end end def self.preload self.clear LazyConst::CACHE.keys.each do |class_dot_name| klass, name = class_dot_name.split('.') - m = klass.constantize.public_send name.to_sym + m = const_get(klass.to_sym).send name.to_sym end end def self.clear LazyConst::CACHE.keys.each do |k|