From 3e824d3f5b32bae70832fe0c1c329ce062f79ff9 Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Wed, 30 Dec 2015 21:07:40 +0800 Subject: [PATCH] Move most caching methods to ActionDispatch::Caching, and let ActionMailer and ActionController to include it --- actionmailer/lib/action_mailer/caching.rb | 57 +------------------ actionmailer/test/caching_test.rb | 1 - actionpack/lib/action_controller/caching.rb | 57 +------------------ actionpack/lib/action_dispatch/caching.rb | 61 +++++++++++++++++++++ 4 files changed, 67 insertions(+), 109 deletions(-) create mode 100644 actionpack/lib/action_dispatch/caching.rb diff --git a/actionmailer/lib/action_mailer/caching.rb b/actionmailer/lib/action_mailer/caching.rb index c5b4890178..319909d1a7 100644 --- a/actionmailer/lib/action_mailer/caching.rb +++ b/actionmailer/lib/action_mailer/caching.rb @@ -1,62 +1,11 @@ -require 'active_support/descendants_tracker' -require 'action_dispatch/caching/fragments' +require 'action_dispatch/caching' module ActionMailer module Caching - extend ActiveSupport::Concern extend ActiveSupport::Autoload - - module ConfigMethods - def cache_store - config.cache_store - end - - def cache_store=(store) - config.cache_store = ActiveSupport::Cache.lookup_store(store) - end - - private - def cache_configured? - perform_caching && cache_store - end - end - - include AbstractController::Helpers - include ConfigMethods - include ActionDispatch::Caching::Fragments - + extend ActiveSupport::Concern included do - extend ConfigMethods - - config_accessor :default_static_extension - self.default_static_extension ||= '.html' - - config_accessor :perform_caching - self.perform_caching = true if perform_caching.nil? - - class_attribute :_view_cache_dependencies - self._view_cache_dependencies = [] - helper_method :view_cache_dependencies if respond_to?(:helper_method) - end - - module ClassMethods - def view_cache_dependency(&dependency) - self._view_cache_dependencies += [dependency] - end - end - - def view_cache_dependencies - self.class._view_cache_dependencies.map { |dep| instance_exec(&dep) }.compact - end - - protected - # Convenience accessor. - def cache(key, options = {}, &block) - if cache_configured? - cache_store.fetch(ActiveSupport::Cache.expand_cache_key(key, :controller), options, &block) - else - yield - end + include ActionDispatch::Caching end def perform_caching diff --git a/actionmailer/test/caching_test.rb b/actionmailer/test/caching_test.rb index a92f43a6c5..e48d2042ac 100644 --- a/actionmailer/test/caching_test.rb +++ b/actionmailer/test/caching_test.rb @@ -2,7 +2,6 @@ require 'fileutils' require 'abstract_unit' require 'mailers/base_mailer' require 'mailers/caching_mailer' -require 'byebug' CACHE_DIR = 'test_cache' # Don't change '/../temp/' cavalierly or you might hose something you don't want hosed diff --git a/actionpack/lib/action_controller/caching.rb b/actionpack/lib/action_controller/caching.rb index ae868e23ed..e832f4adf4 100644 --- a/actionpack/lib/action_controller/caching.rb +++ b/actionpack/lib/action_controller/caching.rb @@ -1,6 +1,4 @@ -require 'action_dispatch/caching/fragments' -require 'fileutils' -require 'uri' +require 'action_dispatch/caching' module ActionController # \Caching is a cheap way of speeding up slow applications by keeping the result of @@ -24,61 +22,12 @@ module ActionController # config.action_controller.cache_store = :mem_cache_store, Memcached::Rails.new('localhost:11211') # config.action_controller.cache_store = MyOwnStore.new('parameter') module Caching - extend ActiveSupport::Concern extend ActiveSupport::Autoload - - module ConfigMethods - def cache_store - config.cache_store - end - - def cache_store=(store) - config.cache_store = ActiveSupport::Cache.lookup_store(store) - end - - private - def cache_configured? - perform_caching && cache_store - end - end - + extend ActiveSupport::Concern include AbstractController::Callbacks - include ConfigMethods - include ActionDispatch::Caching::Fragments - included do - extend ConfigMethods - - config_accessor :default_static_extension - self.default_static_extension ||= '.html' - - config_accessor :perform_caching - self.perform_caching = true if perform_caching.nil? - - class_attribute :_view_cache_dependencies - self._view_cache_dependencies = [] - helper_method :view_cache_dependencies if respond_to?(:helper_method) + include ActionDispatch::Caching end - - module ClassMethods - def view_cache_dependency(&dependency) - self._view_cache_dependencies += [dependency] - end - end - - def view_cache_dependencies - self.class._view_cache_dependencies.map { |dep| instance_exec(&dep) }.compact - end - - protected - # Convenience accessor. - def cache(key, options = {}, &block) - if cache_configured? - cache_store.fetch(ActiveSupport::Cache.expand_cache_key(key, :controller), options, &block) - else - yield - end - end end end diff --git a/actionpack/lib/action_dispatch/caching.rb b/actionpack/lib/action_dispatch/caching.rb new file mode 100644 index 0000000000..ac4a35d1db --- /dev/null +++ b/actionpack/lib/action_dispatch/caching.rb @@ -0,0 +1,61 @@ +require 'action_dispatch/caching/fragments' + +module ActionDispatch + module Caching + extend ActiveSupport::Concern + extend ActiveSupport::Autoload + + module ConfigMethods + def cache_store + config.cache_store + end + + def cache_store=(store) + config.cache_store = ActiveSupport::Cache.lookup_store(store) + end + + private + def cache_configured? + perform_caching && cache_store + end + end + + include AbstractController::Helpers + include ConfigMethods + include ActionDispatch::Caching::Fragments + + included do + extend ConfigMethods + + config_accessor :default_static_extension + self.default_static_extension ||= '.html' + + config_accessor :perform_caching + self.perform_caching = true if perform_caching.nil? + + class_attribute :_view_cache_dependencies + self._view_cache_dependencies = [] + helper_method :view_cache_dependencies if respond_to?(:helper_method) + end + + module ClassMethods + def view_cache_dependency(&dependency) + self._view_cache_dependencies += [dependency] + end + end + + def view_cache_dependencies + self.class._view_cache_dependencies.map { |dep| instance_exec(&dep) }.compact + end + + protected + # Convenience accessor. + def cache(key, options = {}, &block) + if cache_configured? + cache_store.fetch(ActiveSupport::Cache.expand_cache_key(key, :controller), options, &block) + else + yield + end + end + end +end