aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_controller/caching.rb34
-rw-r--r--actionpack/lib/action_controller/metal/compatibility.rb5
-rw-r--r--actionpack/test/controller/caching_test.rb21
-rw-r--r--actionpack/test/controller/log_subscriber_test.rb3
4 files changed, 33 insertions, 30 deletions
diff --git a/actionpack/lib/action_controller/caching.rb b/actionpack/lib/action_controller/caching.rb
index d784138ebe..7fae4e924d 100644
--- a/actionpack/lib/action_controller/caching.rb
+++ b/actionpack/lib/action_controller/caching.rb
@@ -40,15 +40,27 @@ module ActionController #:nodoc:
autoload :Sweeping, 'action_controller/caching/sweeping'
end
- included do
- @@cache_store = nil
- cattr_reader :cache_store
+ module ConfigMethods
+ def cache_store
+ config.cache_store
+ end
- # Defines the storage option for cached fragments
- def self.cache_store=(store_option)
- @@cache_store = ActiveSupport::Cache.lookup_store(store_option)
+ def cache_store=(store)
+ config.cache_store = ActiveSupport::Cache.lookup_store(store)
end
+ private
+
+ def cache_configured?
+ perform_caching && cache_store
+ end
+ end
+
+ include ConfigMethods
+
+ included do
+ extend ConfigMethods
+
include Pages, Actions, Fragments
include Sweeping if defined?(ActiveRecord)
@@ -56,11 +68,6 @@ module ActionController #:nodoc:
cattr_accessor :perform_caching
end
- module ClassMethods
- def cache_configured?
- perform_caching && cache_store
- end
- end
def caching_allowed?
request.get? && response.status == 200
@@ -75,10 +82,5 @@ module ActionController #:nodoc:
yield
end
end
-
- private
- def cache_configured?
- self.class.cache_configured?
- end
end
end
diff --git a/actionpack/lib/action_controller/metal/compatibility.rb b/actionpack/lib/action_controller/metal/compatibility.rb
index 44ace925e9..317a9fd951 100644
--- a/actionpack/lib/action_controller/metal/compatibility.rb
+++ b/actionpack/lib/action_controller/metal/compatibility.rb
@@ -35,11 +35,6 @@ module ActionController
raise env["action_dispatch.rescue.exception"]
end
- # Defines the storage option for cached fragments
- def cache_store=(store_option)
- @@cache_store = ActiveSupport::Cache.lookup_store(store_option)
- end
-
self.page_cache_directory = defined?(Rails.public_path) ? Rails.public_path : ""
end
diff --git a/actionpack/test/controller/caching_test.rb b/actionpack/test/controller/caching_test.rb
index e42ef85b98..11ef3cdd92 100644
--- a/actionpack/test/controller/caching_test.rb
+++ b/actionpack/test/controller/caching_test.rb
@@ -6,12 +6,18 @@ CACHE_DIR = 'test_cache'
# Don't change '/../temp/' cavalierly or you might hose something you don't want hosed
FILE_STORE_PATH = File.join(File.dirname(__FILE__), '/../temp/', CACHE_DIR)
ActionController::Base.page_cache_directory = FILE_STORE_PATH
-ActionController::Base.cache_store = :file_store, FILE_STORE_PATH
-class PageCachingTestController < ActionController::Base
+class CachingController < ActionController::Base
+ abstract!
+
+ self.cache_store = :file_store, FILE_STORE_PATH
+end
+
+class PageCachingTestController < CachingController
caches_page :ok, :no_content, :if => Proc.new { |c| !c.request.format.json? }
caches_page :found, :not_found
+
def ok
head :ok
end
@@ -55,6 +61,7 @@ class PageCachingTest < ActionController::TestCase
@response = ActionController::TestResponse.new
@controller = PageCachingTestController.new
+ @controller.cache_store = :file_store, FILE_STORE_PATH
@params = {:controller => 'posts', :action => 'index', :only_path => true, :skip_relative_url_root => true}
@rewriter = ActionController::UrlRewriter.new(@request, @params)
@@ -148,7 +155,7 @@ class PageCachingTest < ActionController::TestCase
end
end
-class ActionCachingTestController < ActionController::Base
+class ActionCachingTestController < CachingController
rescue_from(Exception) { head 500 }
if defined? ActiveRecord
rescue_from(ActiveRecord::RecordNotFound) { head :not_found }
@@ -522,7 +529,7 @@ class ActionCacheTest < ActionController::TestCase
end
end
-class FragmentCachingTestController < ActionController::Base
+class FragmentCachingTestController < CachingController
def some_action; end;
end
@@ -531,8 +538,8 @@ class FragmentCachingTest < ActionController::TestCase
super
ActionController::Base.perform_caching = true
@store = ActiveSupport::Cache::MemoryStore.new
- ActionController::Base.cache_store = @store
@controller = FragmentCachingTestController.new
+ @controller.cache_store = @store
@params = {:controller => 'posts', :action => 'index'}
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
@@ -630,7 +637,7 @@ class FragmentCachingTest < ActionController::TestCase
end
-class FunctionalCachingController < ActionController::Base
+class FunctionalCachingController < CachingController
def fragment_cached
end
@@ -664,8 +671,8 @@ class FunctionalFragmentCachingTest < ActionController::TestCase
super
ActionController::Base.perform_caching = true
@store = ActiveSupport::Cache::MemoryStore.new
- ActionController::Base.cache_store = @store
@controller = FunctionalCachingController.new
+ @controller.cache_store = @store
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
end
diff --git a/actionpack/test/controller/log_subscriber_test.rb b/actionpack/test/controller/log_subscriber_test.rb
index 1f8134822c..20d3e77b6e 100644
--- a/actionpack/test/controller/log_subscriber_test.rb
+++ b/actionpack/test/controller/log_subscriber_test.rb
@@ -46,8 +46,7 @@ class ACLogSubscriberTest < ActionController::TestCase
@cache_path = File.expand_path('../temp/test_cache', File.dirname(__FILE__))
ActionController::Base.page_cache_directory = @cache_path
- ActionController::Base.cache_store = :file_store, @cache_path
-
+ @controller.cache_store = :file_store, @cache_path
Rails::LogSubscriber.add(:action_controller, ActionController::Railties::LogSubscriber.new)
end