diff --git a/.rubocop.yml b/.rubocop.yml index e6a1a7e4..e7d729cc 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -8,39 +8,6 @@ AllCops: DisplayCopNames: true DisplayStyleGuide: true -Style/IndentationConsistency: - Exclude: - - lib/active_model/serializer/adapter/attributes.rb - - lib/active_model/serializer/adapter/fragment_cache.rb - - lib/active_model/serializer/adapter/json.rb - - lib/active_model/serializer/adapter/json/fragment_cache.rb - - lib/active_model/serializer/adapter/json_api.rb - - lib/active_model/serializer/adapter/json_api/fragment_cache.rb - - lib/active_model/serializer/adapter/json_api/pagination_links.rb - - lib/active_model/serializer/adapter/null.rb - -Style/IndentationWidth: - Exclude: - - lib/active_model/serializer/adapter/attributes.rb - - lib/active_model/serializer/adapter/fragment_cache.rb - - lib/active_model/serializer/adapter/json.rb - - lib/active_model/serializer/adapter/json/fragment_cache.rb - - lib/active_model/serializer/adapter/json_api.rb - - lib/active_model/serializer/adapter/json_api/fragment_cache.rb - - lib/active_model/serializer/adapter/json_api/pagination_links.rb - - lib/active_model/serializer/adapter/null.rb - -Style/AccessModifierIndentation: - Exclude: - - lib/active_model/serializer/adapter/attributes.rb - - lib/active_model/serializer/adapter/fragment_cache.rb - - lib/active_model/serializer/adapter/json.rb - - lib/active_model/serializer/adapter/json/fragment_cache.rb - - lib/active_model/serializer/adapter/json_api.rb - - lib/active_model/serializer/adapter/json_api/fragment_cache.rb - - lib/active_model/serializer/adapter/json_api/pagination_links.rb - - lib/active_model/serializer/adapter/null.rb - Lint/NestedMethodDefinition: Enabled: false Exclude: diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index e77ddfd5..62f42751 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -9,8 +9,6 @@ require 'active_model/serializer/utils' module ActiveModel class Serializer - extend ActiveSupport::Autoload - include Configuration include Associations diff --git a/lib/active_model/serializer/adapter.rb b/lib/active_model/serializer/adapter.rb index 4ef0d24d..20b21a79 100644 --- a/lib/active_model/serializer/adapter.rb +++ b/lib/active_model/serializer/adapter.rb @@ -4,13 +4,8 @@ module ActiveModel UnknownAdapterError = Class.new(ArgumentError) ADAPTER_MAP = {} private_constant :ADAPTER_MAP if defined?(private_constant) - extend ActiveSupport::Autoload - autoload :Attributes - autoload :Null - autoload :FragmentCache - autoload :Json - autoload :JsonApi - autoload :CachedSerializer + require 'active_model/serializer/adapter/fragment_cache' + require 'active_model/serializer/adapter/cached_serializer' def self.create(resource, options = {}) override = options.delete(:adapter) @@ -131,6 +126,12 @@ module ActiveModel json[meta_key] = meta if meta json end + + # Gotta be at the bottom to use the code above it :( + require 'active_model/serializer/adapter/null' + require 'active_model/serializer/adapter/attributes' + require 'active_model/serializer/adapter/json' + require 'active_model/serializer/adapter/json_api' end end end diff --git a/lib/active_model/serializer/adapter/attributes.rb b/lib/active_model/serializer/adapter/attributes.rb index 40cf9a31..7ebe76ba 100644 --- a/lib/active_model/serializer/adapter/attributes.rb +++ b/lib/active_model/serializer/adapter/attributes.rb @@ -1,4 +1,7 @@ -class ActiveModel::Serializer::Adapter::Attributes < ActiveModel::Serializer::Adapter +module ActiveModel + class Serializer + class Adapter + class Attributes < Adapter def serializable_hash(options = nil) options ||= {} if serializer.respond_to?(:each) @@ -47,4 +50,7 @@ class ActiveModel::Serializer::Adapter::Attributes < ActiveModel::Serializer::Ad def include_meta(json) json end + end + end + end end diff --git a/lib/active_model/serializer/adapter/fragment_cache.rb b/lib/active_model/serializer/adapter/fragment_cache.rb index 8b1380f2..7b47c1d4 100644 --- a/lib/active_model/serializer/adapter/fragment_cache.rb +++ b/lib/active_model/serializer/adapter/fragment_cache.rb @@ -1,4 +1,7 @@ -class ActiveModel::Serializer::Adapter::FragmentCache +module ActiveModel + class Serializer + class Adapter + class FragmentCache attr_reader :serializer def initialize(adapter, serializer, options) @@ -76,4 +79,7 @@ class ActiveModel::Serializer::Adapter::FragmentCache def to_valid_const_name(name) name.gsub('::', '_') end + end + end + end end diff --git a/lib/active_model/serializer/adapter/json.rb b/lib/active_model/serializer/adapter/json.rb index 9b9b9cdc..1bebe8e8 100644 --- a/lib/active_model/serializer/adapter/json.rb +++ b/lib/active_model/serializer/adapter/json.rb @@ -1,4 +1,7 @@ -class ActiveModel::Serializer::Adapter::Json < ActiveModel::Serializer::Adapter +module ActiveModel + class Serializer + class Adapter + class Json < Adapter extend ActiveSupport::Autoload autoload :FragmentCache @@ -12,4 +15,7 @@ class ActiveModel::Serializer::Adapter::Json < ActiveModel::Serializer::Adapter def fragment_cache(cached_hash, non_cached_hash) ActiveModel::Serializer::Adapter::Json::FragmentCache.new.fragment_cache(cached_hash, non_cached_hash) end + end + end + end end diff --git a/lib/active_model/serializer/adapter/json/fragment_cache.rb b/lib/active_model/serializer/adapter/json/fragment_cache.rb index 5e687241..76ba1ee6 100644 --- a/lib/active_model/serializer/adapter/json/fragment_cache.rb +++ b/lib/active_model/serializer/adapter/json/fragment_cache.rb @@ -1,5 +1,13 @@ -class ActiveModel::Serializer::Adapter::Json::FragmentCache +module ActiveModel + class Serializer + class Adapter + class Json + class FragmentCache def fragment_cache(cached_hash, non_cached_hash) non_cached_hash.merge cached_hash end + end + end + end + end end diff --git a/lib/active_model/serializer/adapter/json_api.rb b/lib/active_model/serializer/adapter/json_api.rb index 89d196e8..87b40999 100644 --- a/lib/active_model/serializer/adapter/json_api.rb +++ b/lib/active_model/serializer/adapter/json_api.rb @@ -1,4 +1,7 @@ -class ActiveModel::Serializer::Adapter::JsonApi < ActiveModel::Serializer::Adapter +module ActiveModel + class Serializer + class Adapter + class JsonApi < Adapter extend ActiveSupport::Autoload autoload :PaginationLinks autoload :FragmentCache @@ -157,4 +160,7 @@ class ActiveModel::Serializer::Adapter::JsonApi < ActiveModel::Serializer::Adapt def links_for(serializer, options) JsonApi::PaginationLinks.new(serializer.object, options[:context]).serializable_hash(options) end + end + end + end end diff --git a/lib/active_model/serializer/adapter/json_api/fragment_cache.rb b/lib/active_model/serializer/adapter/json_api/fragment_cache.rb index ab348130..edadb4ec 100644 --- a/lib/active_model/serializer/adapter/json_api/fragment_cache.rb +++ b/lib/active_model/serializer/adapter/json_api/fragment_cache.rb @@ -1,4 +1,8 @@ -class ActiveModel::Serializer::Adapter::JsonApi::FragmentCache +module ActiveModel + class Serializer + class Adapter + class JsonApi + class FragmentCache def fragment_cache(root, cached_hash, non_cached_hash) hash = {} core_cached = cached_hash.first @@ -10,4 +14,8 @@ class ActiveModel::Serializer::Adapter::JsonApi::FragmentCache hash.deep_merge no_root_non_cache.deep_merge no_root_cache end + end + end + end + end end diff --git a/lib/active_model/serializer/adapter/json_api/pagination_links.rb b/lib/active_model/serializer/adapter/json_api/pagination_links.rb index 8661f3b1..55e3280b 100644 --- a/lib/active_model/serializer/adapter/json_api/pagination_links.rb +++ b/lib/active_model/serializer/adapter/json_api/pagination_links.rb @@ -1,4 +1,8 @@ -class ActiveModel::Serializer::Adapter::JsonApi::PaginationLinks +module ActiveModel + class Serializer + class Adapter + class JsonApi < Adapter + class PaginationLinks FIRST_PAGE = 1 attr_reader :collection, :context @@ -47,4 +51,8 @@ class ActiveModel::Serializer::Adapter::JsonApi::PaginationLinks def query_parameters @query_parameters ||= context.query_parameters end + end + end + end + end end diff --git a/lib/active_model/serializer/adapter/null.rb b/lib/active_model/serializer/adapter/null.rb index 78f9b8e3..1728f88e 100644 --- a/lib/active_model/serializer/adapter/null.rb +++ b/lib/active_model/serializer/adapter/null.rb @@ -1,5 +1,11 @@ -class ActiveModel::Serializer::Adapter::Null < ActiveModel::Serializer::Adapter +module ActiveModel + class Serializer + class Adapter + class Null < Adapter def serializable_hash(options = nil) {} end + end + end + end end diff --git a/lib/active_model/serializer/associations.rb b/lib/active_model/serializer/associations.rb index c8628435..660ff0d1 100644 --- a/lib/active_model/serializer/associations.rb +++ b/lib/active_model/serializer/associations.rb @@ -15,6 +15,7 @@ module ActiveModel attr_accessor :_reflections end + extend ActiveSupport::Autoload autoload :Association autoload :Reflection autoload :SingularReflection diff --git a/test/serializers/adapter_for_test.rb b/test/serializers/adapter_for_test.rb index 17517dd4..63f2e01e 100644 --- a/test/serializers/adapter_for_test.rb +++ b/test/serializers/adapter_for_test.rb @@ -5,11 +5,6 @@ module ActiveModel def setup @previous_adapter = ActiveModel::Serializer.config.adapter - # Eager load adapters - ActiveModel::Serializer::Adapter.eager_load! - [:json_api, :attributes, :null, :json].each do |adapter_name| - ActiveModel::Serializer::Adapter.lookup(adapter_name) - end end def teardown @@ -66,12 +61,13 @@ module ActiveModel def test_adapter_map expected_adapter_map = { + 'null'.freeze => ActiveModel::Serializer::Adapter::Null, 'json'.freeze => ActiveModel::Serializer::Adapter::Json, - 'json_api'.freeze => ActiveModel::Serializer::Adapter::JsonApi, 'attributes'.freeze => ActiveModel::Serializer::Adapter::Attributes, - 'null'.freeze => ActiveModel::Serializer::Adapter::Null + 'json_api'.freeze => ActiveModel::Serializer::Adapter::JsonApi } - assert_equal ActiveModel::Serializer::Adapter.adapter_map, expected_adapter_map + actual = ActiveModel::Serializer::Adapter.adapter_map + assert_equal actual, expected_adapter_map end def test_adapters