lib/wolverine.rb in wolverine-0.2.5 vs lib/wolverine.rb in wolverine-0.2.6

- old
+ new

@@ -28,10 +28,11 @@ # manually reset the cache using +reset!+. # # @return [void] def self.reset! @root_directory = nil + reset_cached_methods end # Used to handle dynamic accesses to scripts. Successful lookups will be # cached on the {PathComponent} object. See {PathComponent#method_missing} # for more detail on how this works. @@ -56,10 +57,11 @@ config.redis end def reset! @root_directory = nil + reset_cached_methods end def method_missing sym, *args root_directory.send(sym, *args) rescue PathComponent::MissingTemplate @@ -67,13 +69,33 @@ end private def self.root_directory - @root_directory ||= PathComponent.new(config.script_path) + @root_directory ||= PathComponent.new(config.script_path, {:cache_to => self}) end + def self.cached_methods + @cached_methods ||= Hash.new + end + + def self.reset_cached_methods + metaclass = class << self; self; end + cached_methods.each_key { |method| metaclass.send(:undef_method, method) } + cached_methods.clear + end + def root_directory - @root_directory ||= PathComponent.new(config.script_path, {:config => config, :redis => redis}) + @root_directory ||= PathComponent.new(config.script_path, {:cache_to => self, :config => config, :redis => redis}) + end + + def cached_methods + @cached_methods ||= Hash.new + end + + def reset_cached_methods + metaclass = class << self; self; end + cached_methods.each_key { |method| metaclass.send(:undef_method, method) } + cached_methods.clear end end