lib/wolverine.rb in wolverine-0.3.0 vs lib/wolverine.rb in wolverine-0.3.1

- old
+ new

@@ -21,17 +21,26 @@ # @return [Redis] the redis connection used by Wolverine def self.redis config.redis end + def self.statsd_enabled? + @statsd_enabled + end + + def self.enable_statsd! + @statsd_enabled = true + end + # Resets all the scripts cached by Wolverine. Scripts are lazy-loaded and # cached in-memory, so if a file changes on disk, it will be necessary to # 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,24 +65,51 @@ config.redis end def reset! @root_directory = nil + reset_cached_methods end def method_missing sym, *args - root_directory.send(sym, *args) + # Disallow access to protected partials (files that begin with _ character) + if sym[0] == '_' + super + else + root_directory.send(sym, *args) + end + rescue PathComponent::MissingTemplate super 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