Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove Adapter autoloads in favor of require #1177

Merged
merged 1 commit into from
Sep 18, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 0 additions & 33 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
2 changes: 0 additions & 2 deletions lib/active_model/serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@

module ActiveModel
class Serializer
extend ActiveSupport::Autoload

include Configuration
include Associations

Expand Down
15 changes: 8 additions & 7 deletions lib/active_model/serializer/adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,8 @@ class Adapter
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)
Expand Down Expand Up @@ -131,6 +126,12 @@ def include_meta(json)
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
8 changes: 7 additions & 1 deletion lib/active_model/serializer/adapter/attributes.rb
Original file line number Diff line number Diff line change
@@ -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)
Expand Down Expand Up @@ -47,4 +50,7 @@ def fragment_cache(cached_hash, non_cached_hash)
def include_meta(json)
json
end
end
end
end
end
8 changes: 7 additions & 1 deletion lib/active_model/serializer/adapter/fragment_cache.rb
Original file line number Diff line number Diff line change
@@ -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)
Expand Down Expand Up @@ -76,4 +79,7 @@ def fragment_serializer(name, klass)
def to_valid_const_name(name)
name.gsub('::', '_')
end
end
end
end
end
8 changes: 7 additions & 1 deletion lib/active_model/serializer/adapter/json.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
class ActiveModel::Serializer::Adapter::Json < ActiveModel::Serializer::Adapter
module ActiveModel
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I remember a commit going the other way a couple weeks ago. Ha

class Serializer
class Adapter
class Json < Adapter
extend ActiveSupport::Autoload
autoload :FragmentCache

Expand All @@ -12,4 +15,7 @@ def serializable_hash(options = nil)
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
10 changes: 9 additions & 1 deletion lib/active_model/serializer/adapter/json/fragment_cache.rb
Original file line number Diff line number Diff line change
@@ -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
8 changes: 7 additions & 1 deletion lib/active_model/serializer/adapter/json_api.rb
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -157,4 +160,7 @@ def _included_for(serializer, includes)
def links_for(serializer, options)
JsonApi::PaginationLinks.new(serializer.object, options[:context]).serializable_hash(options)
end
end
end
end
end
10 changes: 9 additions & 1 deletion lib/active_model/serializer/adapter/json_api/fragment_cache.rb
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -10,4 +14,8 @@ def fragment_cache(root, cached_hash, non_cached_hash)

hash.deep_merge no_root_non_cache.deep_merge no_root_cache
end
end
end
end
end
end
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -47,4 +51,8 @@ def original_url
def query_parameters
@query_parameters ||= context.query_parameters
end
end
end
end
end
end
8 changes: 7 additions & 1 deletion lib/active_model/serializer/adapter/null.rb
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions lib/active_model/serializer/associations.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class << base
attr_accessor :_reflections
end

extend ActiveSupport::Autoload
autoload :Association
autoload :Reflection
autoload :SingularReflection
Expand Down
12 changes: 4 additions & 8 deletions test/serializers/adapter_for_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,6 @@ class AdapterForTest < Minitest::Test

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
Expand Down Expand Up @@ -66,12 +61,13 @@ def test_adapter_class_for_unknown_adapter

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
Expand Down