From 7814d1c0ae63428fecc3df79bec3903a6e8857d0 Mon Sep 17 00:00:00 2001 From: st0012 Date: Fri, 19 Apr 2019 22:50:42 +0900 Subject: [PATCH] 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 --- actionpack/lib/action_controller/api.rb | 1 + railties/test/application/configuration_test.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/actionpack/lib/action_controller/api.rb b/actionpack/lib/action_controller/api.rb index c276ee57c0d..02ab3bf5704 100644 --- a/actionpack/lib/action_controller/api.rb +++ b/actionpack/lib/action_controller/api.rb @@ -117,6 +117,7 @@ module ActionController ApiRendering, Renderers::All, ConditionalGet, + Caching, BasicImplicitRender, StrongParameters, diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 62d9b1c813f..0ddf299875b 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -2216,6 +2216,19 @@ module ApplicationTests 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