Sha256: 0652d2539d513ebf254748d9cf5455dad50838c1de59a241d11550835d0220ed
Contents?: true
Size: 675 Bytes
Versions: 1
Compression:
Stored size: 675 Bytes
Contents
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 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 = const_get(klass.to_sym).send name.to_sym end end def self.clear LazyConst::CACHE.keys.each do |k| LazyConst::CACHE[k] = nil end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lazy_const-0.1.3 | lib/lazy_const.rb |