diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2015-07-20 13:15:55 +0200 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2015-07-20 13:15:55 +0200 |
commit | 068865a7d5624d55de578888a77a41df9e5b847a (patch) | |
tree | 198ce26f70c865a1a299e5837573832b60811984 /actionview/lib | |
parent | 6ffec3c16c0ee0b0ab4643907af1f2ed80a71a9a (diff) | |
parent | 7bd70bae142e41f3c21338a8e5aaf52afff40b38 (diff) | |
download | rails-068865a7d5624d55de578888a77a41df9e5b847a.tar.gz rails-068865a7d5624d55de578888a77a41df9e5b847a.tar.bz2 rails-068865a7d5624d55de578888a77a41df9e5b847a.zip |
Merge pull request #20384 from kaspth/per-request-cache
Use digest cache in development.
Diffstat (limited to 'actionview/lib')
-rw-r--r-- | actionview/lib/action_view/digestor.rb | 12 | ||||
-rw-r--r-- | actionview/lib/action_view/railtie.rb | 8 |
2 files changed, 16 insertions, 4 deletions
diff --git a/actionview/lib/action_view/digestor.rb b/actionview/lib/action_view/digestor.rb index df8059d04e..4224346a2f 100644 --- a/actionview/lib/action_view/digestor.rb +++ b/actionview/lib/action_view/digestor.rb @@ -8,6 +8,13 @@ module ActionView @@cache = ThreadSafe::Cache.new @@digest_monitor = Monitor.new + class PerRequestDigestCacheExpiry < Struct.new(:app) # :nodoc: + def call(env) + ActionView::Digestor.cache.clear + app.call(env) + end + end + class << self # Supported options: # @@ -41,10 +48,7 @@ module ActionView Digestor end - digest = klass.new(options).digest - # Store the actual digest if config.cache_template_loading is true - @@cache[cache_key] = stored_digest = digest if ActionView::Resolver.caching? - digest + @@cache[cache_key] = stored_digest = klass.new(options).digest ensure # something went wrong or ActionView::Resolver.caching? is false, make sure not to corrupt the @@cache @@cache.delete_pair(cache_key, false) if pre_stored && !stored_digest diff --git a/actionview/lib/action_view/railtie.rb b/actionview/lib/action_view/railtie.rb index 5dc7950d6b..e829d86c99 100644 --- a/actionview/lib/action_view/railtie.rb +++ b/actionview/lib/action_view/railtie.rb @@ -42,6 +42,14 @@ module ActionView end end + initializer "action_view.per_request_digest_cache" do |app| + ActiveSupport.on_load(:action_view) do + if app.config.consider_all_requests_local + app.middleware.use ActionView::Digestor::PerRequestDigestCacheExpiry + end + end + end + initializer "action_view.setup_action_pack" do |app| ActiveSupport.on_load(:action_controller) do ActionView::RoutingUrlFor.include(ActionDispatch::Routing::UrlFor) |