From a9ce4fb766b1f3c71b09027ca95c43f53e2104cd Mon Sep 17 00:00:00 2001 From: Benjamin Fleischer Date: Tue, 10 Nov 2015 01:39:30 -0600 Subject: [PATCH] Move caching initialization to Railtie Also - Add reference to config from ActiveModelSerializers.config - correctly call super in FragmentCacheTest#setup - rename test rails app from Foo to ActiveModelSerializers::RailsApplication --- lib/active_model/serializer.rb | 2 +- lib/active_model/serializer/railtie.rb | 7 +++++++ lib/active_model_serializers.rb | 4 ++++ test/adapter/fragment_cache_test.rb | 1 + test/support/rails_app.rb | 10 +++++++--- 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index b513216f..3975391c 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -152,7 +152,7 @@ module ActiveModel # @todo require less code comments. See # https://github.com/rails-api/active_model_serializers/pull/1249#issuecomment-146567837 def self.cache(options = {}) - self._cache = ActionController::Base.cache_store if Rails.configuration.action_controller.perform_caching + self._cache = ActiveModelSerializers.config.cache_store if ActiveModelSerializers.config.perform_caching self._cache_key = options.delete(:key) self._cache_only = options.delete(:only) self._cache_except = options.delete(:except) diff --git a/lib/active_model/serializer/railtie.rb b/lib/active_model/serializer/railtie.rb index 533a191c..18bb513c 100644 --- a/lib/active_model/serializer/railtie.rb +++ b/lib/active_model/serializer/railtie.rb @@ -8,6 +8,13 @@ module ActiveModel end end + initializer 'active_model_serializers.caching' do + ActiveSupport.on_load(:action_controller) do + ActiveModelSerializers.config.cache_store = ActionController::Base.cache_store + ActiveModelSerializers.config.perform_caching = Rails.configuration.action_controller.perform_caching + end + end + initializer 'generators' do |app| app.load_generators require 'generators/serializer/resource_override' diff --git a/lib/active_model_serializers.rb b/lib/active_model_serializers.rb index c7a4d1d4..a3e2ff00 100644 --- a/lib/active_model_serializers.rb +++ b/lib/active_model_serializers.rb @@ -5,6 +5,10 @@ require 'action_controller/railtie' module ActiveModelSerializers mattr_accessor(:logger) { ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT)) } + def self.config + ActiveModel::Serializer.config + end + extend ActiveSupport::Autoload autoload :Model autoload :Callbacks diff --git a/test/adapter/fragment_cache_test.rb b/test/adapter/fragment_cache_test.rb index fc6c3feb..cacc156c 100644 --- a/test/adapter/fragment_cache_test.rb +++ b/test/adapter/fragment_cache_test.rb @@ -4,6 +4,7 @@ module ActiveModel module Adapter class FragmentCacheTest < Minitest::Test def setup + super @spam = Spam::UnrelatedLink.new(id: 'spam-id-1') @author = Author.new(name: 'Joao M. D. Moura') @role = Role.new(name: 'Great Author', description: nil) diff --git a/test/support/rails_app.rb b/test/support/rails_app.rb index c567de2d..ced830dc 100644 --- a/test/support/rails_app.rb +++ b/test/support/rails_app.rb @@ -1,14 +1,18 @@ -class Foo < Rails::Application +class ActiveModelSerializers::RailsApplication < Rails::Application if Rails::VERSION::MAJOR >= 4 config.eager_load = false + config.secret_key_base = 'abc123' - config.action_controller.perform_caching = true + config.active_support.test_order = :random + config.logger = Logger.new(nil) + + config.action_controller.perform_caching = true ActionController::Base.cache_store = :memory_store end end -Foo.initialize! +ActiveModelSerializers::RailsApplication.initialize! module TestHelper Routes = ActionDispatch::Routing::RouteSet.new