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|