Skip to content

Commit ad2ca3b

Browse files
committed
Remove Adapter autoloads in favor of require
Adapters must be eager loaded to ensure they are defined before they are used as namespacing. cf6a074#diff-41f2b3509d33e1c65bb70ee0ec7a2eea
1 parent a309132 commit ad2ca3b

File tree

13 files changed

+75
-58
lines changed

13 files changed

+75
-58
lines changed

.rubocop.yml

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,39 +8,6 @@ AllCops:
88
DisplayCopNames: true
99
DisplayStyleGuide: true
1010

11-
Style/IndentationConsistency:
12-
Exclude:
13-
- lib/active_model/serializer/adapter/attributes.rb
14-
- lib/active_model/serializer/adapter/fragment_cache.rb
15-
- lib/active_model/serializer/adapter/json.rb
16-
- lib/active_model/serializer/adapter/json/fragment_cache.rb
17-
- lib/active_model/serializer/adapter/json_api.rb
18-
- lib/active_model/serializer/adapter/json_api/fragment_cache.rb
19-
- lib/active_model/serializer/adapter/json_api/pagination_links.rb
20-
- lib/active_model/serializer/adapter/null.rb
21-
22-
Style/IndentationWidth:
23-
Exclude:
24-
- lib/active_model/serializer/adapter/attributes.rb
25-
- lib/active_model/serializer/adapter/fragment_cache.rb
26-
- lib/active_model/serializer/adapter/json.rb
27-
- lib/active_model/serializer/adapter/json/fragment_cache.rb
28-
- lib/active_model/serializer/adapter/json_api.rb
29-
- lib/active_model/serializer/adapter/json_api/fragment_cache.rb
30-
- lib/active_model/serializer/adapter/json_api/pagination_links.rb
31-
- lib/active_model/serializer/adapter/null.rb
32-
33-
Style/AccessModifierIndentation:
34-
Exclude:
35-
- lib/active_model/serializer/adapter/attributes.rb
36-
- lib/active_model/serializer/adapter/fragment_cache.rb
37-
- lib/active_model/serializer/adapter/json.rb
38-
- lib/active_model/serializer/adapter/json/fragment_cache.rb
39-
- lib/active_model/serializer/adapter/json_api.rb
40-
- lib/active_model/serializer/adapter/json_api/fragment_cache.rb
41-
- lib/active_model/serializer/adapter/json_api/pagination_links.rb
42-
- lib/active_model/serializer/adapter/null.rb
43-
4411
Lint/NestedMethodDefinition:
4512
Enabled: false
4613
Exclude:

lib/active_model/serializer.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99

1010
module ActiveModel
1111
class Serializer
12-
extend ActiveSupport::Autoload
13-
1412
include Configuration
1513
include Associations
1614

lib/active_model/serializer/adapter.rb

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,8 @@ class Adapter
44
UnknownAdapterError = Class.new(ArgumentError)
55
ADAPTER_MAP = {}
66
private_constant :ADAPTER_MAP if defined?(private_constant)
7-
extend ActiveSupport::Autoload
8-
autoload :Attributes
9-
autoload :Null
10-
autoload :FragmentCache
11-
autoload :Json
12-
autoload :JsonApi
13-
autoload :CachedSerializer
7+
require 'active_model/serializer/adapter/fragment_cache'
8+
require 'active_model/serializer/adapter/cached_serializer'
149

1510
def self.create(resource, options = {})
1611
override = options.delete(:adapter)
@@ -131,6 +126,12 @@ def include_meta(json)
131126
json[meta_key] = meta if meta
132127
json
133128
end
129+
130+
# Gotta be at the bottom to use the code above it :(
131+
require 'active_model/serializer/adapter/null'
132+
require 'active_model/serializer/adapter/attributes'
133+
require 'active_model/serializer/adapter/json'
134+
require 'active_model/serializer/adapter/json_api'
134135
end
135136
end
136137
end

lib/active_model/serializer/adapter/attributes.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
class ActiveModel::Serializer::Adapter::Attributes < ActiveModel::Serializer::Adapter
1+
module ActiveModel
2+
class Serializer
3+
class Adapter
4+
class Attributes < Adapter
25
def serializable_hash(options = nil)
36
options ||= {}
47
if serializer.respond_to?(:each)
@@ -47,4 +50,7 @@ def fragment_cache(cached_hash, non_cached_hash)
4750
def include_meta(json)
4851
json
4952
end
53+
end
54+
end
55+
end
5056
end

lib/active_model/serializer/adapter/fragment_cache.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
class ActiveModel::Serializer::Adapter::FragmentCache
1+
module ActiveModel
2+
class Serializer
3+
class Adapter
4+
class FragmentCache
25
attr_reader :serializer
36

47
def initialize(adapter, serializer, options)
@@ -76,4 +79,7 @@ def fragment_serializer(name, klass)
7679
def to_valid_const_name(name)
7780
name.gsub('::', '_')
7881
end
82+
end
83+
end
84+
end
7985
end

lib/active_model/serializer/adapter/json.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
class ActiveModel::Serializer::Adapter::Json < ActiveModel::Serializer::Adapter
1+
module ActiveModel
2+
class Serializer
3+
class Adapter
4+
class Json < Adapter
25
extend ActiveSupport::Autoload
36
autoload :FragmentCache
47

@@ -12,4 +15,7 @@ def serializable_hash(options = nil)
1215
def fragment_cache(cached_hash, non_cached_hash)
1316
ActiveModel::Serializer::Adapter::Json::FragmentCache.new.fragment_cache(cached_hash, non_cached_hash)
1417
end
18+
end
19+
end
20+
end
1521
end
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
1-
class ActiveModel::Serializer::Adapter::Json::FragmentCache
1+
module ActiveModel
2+
class Serializer
3+
class Adapter
4+
class Json
5+
class FragmentCache
26
def fragment_cache(cached_hash, non_cached_hash)
37
non_cached_hash.merge cached_hash
48
end
9+
end
10+
end
11+
end
12+
end
513
end

lib/active_model/serializer/adapter/json_api.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
class ActiveModel::Serializer::Adapter::JsonApi < ActiveModel::Serializer::Adapter
1+
module ActiveModel
2+
class Serializer
3+
class Adapter
4+
class JsonApi < Adapter
25
extend ActiveSupport::Autoload
36
autoload :PaginationLinks
47
autoload :FragmentCache
@@ -157,4 +160,7 @@ def _included_for(serializer, includes)
157160
def links_for(serializer, options)
158161
JsonApi::PaginationLinks.new(serializer.object, options[:context]).serializable_hash(options)
159162
end
163+
end
164+
end
165+
end
160166
end

lib/active_model/serializer/adapter/json_api/fragment_cache.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
class ActiveModel::Serializer::Adapter::JsonApi::FragmentCache
1+
module ActiveModel
2+
class Serializer
3+
class Adapter
4+
class JsonApi
5+
class FragmentCache
26
def fragment_cache(root, cached_hash, non_cached_hash)
37
hash = {}
48
core_cached = cached_hash.first
@@ -10,4 +14,8 @@ def fragment_cache(root, cached_hash, non_cached_hash)
1014

1115
hash.deep_merge no_root_non_cache.deep_merge no_root_cache
1216
end
17+
end
18+
end
19+
end
20+
end
1321
end

lib/active_model/serializer/adapter/json_api/pagination_links.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
class ActiveModel::Serializer::Adapter::JsonApi::PaginationLinks
1+
module ActiveModel
2+
class Serializer
3+
class Adapter
4+
class JsonApi < Adapter
5+
class PaginationLinks
26
FIRST_PAGE = 1
37

48
attr_reader :collection, :context
@@ -47,4 +51,8 @@ def original_url
4751
def query_parameters
4852
@query_parameters ||= context.query_parameters
4953
end
54+
end
55+
end
56+
end
57+
end
5058
end

0 commit comments

Comments
 (0)