From 3e824d3f5b32bae70832fe0c1c329ce062f79ff9 Mon Sep 17 00:00:00 2001
From: Stan Lo <a22301613@yahoo.com.tw>
Date: Wed, 30 Dec 2015 21:07:40 +0800
Subject: 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)
-    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
+      include ActionDispatch::Caching
     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
-- 
cgit v1.2.3