diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2013-01-08 10:29:50 -0800 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2013-01-08 10:29:50 -0800 |
commit | 64e3660ff0c0fd708fd4fc5455c54bf3d511032b (patch) | |
tree | 59ea8b888d7bc9c99cdcfab3ad4bf0f346244054 /actionpack/lib/action_view/digestor.rb | |
parent | ac86cbec82acee18a5066e00b98d1c20fc677a15 (diff) | |
parent | 70e684a681352e95fb990747ef6dd7183da333a8 (diff) | |
download | rails-64e3660ff0c0fd708fd4fc5455c54bf3d511032b.tar.gz rails-64e3660ff0c0fd708fd4fc5455c54bf3d511032b.tar.bz2 rails-64e3660ff0c0fd708fd4fc5455c54bf3d511032b.zip |
Merge pull request #8818 from jamis/master
view_cache_dependency API
Diffstat (limited to 'actionpack/lib/action_view/digestor.rb')
-rw-r--r-- | actionpack/lib/action_view/digestor.rb | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/actionpack/lib/action_view/digestor.rb b/actionpack/lib/action_view/digestor.rb index f3f6b425a8..4507861dcc 100644 --- a/actionpack/lib/action_view/digestor.rb +++ b/actionpack/lib/action_view/digestor.rb @@ -24,16 +24,17 @@ module ActionView @@cache = ThreadSafe::Cache.new def self.digest(name, format, finder, options = {}) - @@cache["#{name}.#{format}"] ||= begin + cache_key = [name, format] + Array.wrap(options[:dependencies]) + @@cache[cache_key.join('.')] ||= begin klass = options[:partial] || name.include?("/_") ? PartialDigestor : Digestor - klass.new(name, format, finder).digest + klass.new(name, format, finder, options).digest end end - attr_reader :name, :format, :finder + attr_reader :name, :format, :finder, :options - def initialize(name, format, finder) - @name, @format, @finder = name, format, finder + def initialize(name, format, finder, options={}) + @name, @format, @finder, @options = name, format, finder, options end def digest @@ -81,9 +82,11 @@ module ActionView end def dependency_digest - dependencies.collect do |template_name| + template_digests = dependencies.collect do |template_name| Digestor.digest(template_name, format, finder, partial: true) - end.join("-") + end + + (template_digests + injected_dependencies).join("-") end def render_dependencies @@ -105,6 +108,10 @@ module ActionView def explicit_dependencies source.scan(EXPLICIT_DEPENDENCY).flatten.uniq end + + def injected_dependencies + Array.wrap(options[:dependencies]) + end end class PartialDigestor < Digestor # :nodoc: |