Make sure api controllers can perform caching as well

Currently ActionController::API doesn't include Caching module, so it
can't perform caching. And even if users include it later manually, it
won't inherit application's default cache store for action_controllers.
So the only way to solve this issue is to include Caching module in
ActionController::API, too.

This closes #35602
This commit is contained in:
st0012 2019-04-19 22:50:42 +09:00
parent 16dae7684e
commit 7814d1c0ae
2 changed files with 14 additions and 0 deletions

@ -117,6 +117,7 @@ def self.without_modules(*modules)
ApiRendering,
Renderers::All,
ConditionalGet,
Caching,
BasicImplicitRender,
StrongParameters,

@ -2216,6 +2216,19 @@ class Post < ActiveRecord::Base
assert_equal :default, Rails.configuration.debug_exception_response_format
end
test "action_controller.cache_store works for api_only app as well" do
add_to_config <<-RUBY
config.api_only = true
config.action_controller.cache_store = :memory_store
RUBY
app "development"
api_controller = Class.new(ActionController::API)
assert_equal(api_controller.cache_store.class, ActiveSupport::Cache::MemoryStore)
end
test "controller force_ssl declaration can be used even if session_store is disabled" do
make_basic_app do |application|
application.config.session_store :disabled