active_model_serializers 0.10.9 → 0.10.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -2
  3. data/README.md +18 -19
  4. data/lib/action_controller/serialization.rb +9 -1
  5. data/lib/active_model/serializer/collection_serializer.rb +11 -2
  6. data/lib/active_model/serializer/concerns/caching.rb +2 -1
  7. data/lib/active_model/serializer/fieldset.rb +1 -1
  8. data/lib/active_model/serializer/reflection.rb +4 -4
  9. data/lib/active_model/serializer/version.rb +1 -1
  10. data/lib/active_model/serializer.rb +13 -4
  11. data/lib/active_model_serializers/adapter/attributes.rb +21 -0
  12. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +5 -1
  13. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +1 -1
  14. data/lib/active_model_serializers/model/caching.rb +26 -0
  15. metadata +20 -292
  16. data/.github/ISSUE_TEMPLATE.md +0 -29
  17. data/.github/PULL_REQUEST_TEMPLATE.md +0 -15
  18. data/.gitignore +0 -35
  19. data/.rubocop.yml +0 -109
  20. data/.simplecov +0 -110
  21. data/.travis.yml +0 -63
  22. data/CODE_OF_CONDUCT.md +0 -74
  23. data/CONTRIBUTING.md +0 -105
  24. data/Gemfile +0 -74
  25. data/Rakefile +0 -76
  26. data/active_model_serializers.gemspec +0 -64
  27. data/appveyor.yml +0 -28
  28. data/bin/bench +0 -171
  29. data/bin/bench_regression +0 -316
  30. data/bin/rubocop +0 -38
  31. data/bin/serve_benchmark +0 -39
  32. data/docs/README.md +0 -41
  33. data/docs/STYLE.md +0 -58
  34. data/docs/general/adapters.md +0 -269
  35. data/docs/general/caching.md +0 -58
  36. data/docs/general/configuration_options.md +0 -185
  37. data/docs/general/deserialization.md +0 -100
  38. data/docs/general/fields.md +0 -31
  39. data/docs/general/getting_started.md +0 -133
  40. data/docs/general/instrumentation.md +0 -40
  41. data/docs/general/key_transforms.md +0 -40
  42. data/docs/general/logging.md +0 -21
  43. data/docs/general/rendering.md +0 -293
  44. data/docs/general/serializers.md +0 -495
  45. data/docs/how-open-source-maintained.jpg +0 -0
  46. data/docs/howto/add_pagination_links.md +0 -138
  47. data/docs/howto/add_relationship_links.md +0 -140
  48. data/docs/howto/add_root_key.md +0 -62
  49. data/docs/howto/grape_integration.md +0 -42
  50. data/docs/howto/outside_controller_use.md +0 -66
  51. data/docs/howto/passing_arbitrary_options.md +0 -27
  52. data/docs/howto/serialize_poro.md +0 -73
  53. data/docs/howto/test.md +0 -154
  54. data/docs/howto/upgrade_from_0_8_to_0_10.md +0 -265
  55. data/docs/integrations/ember-and-json-api.md +0 -147
  56. data/docs/integrations/grape.md +0 -19
  57. data/docs/jsonapi/errors.md +0 -56
  58. data/docs/jsonapi/schema/schema.json +0 -366
  59. data/docs/jsonapi/schema.md +0 -151
  60. data/docs/rfcs/0000-namespace.md +0 -106
  61. data/docs/rfcs/template.md +0 -15
  62. data/test/action_controller/adapter_selector_test.rb +0 -64
  63. data/test/action_controller/explicit_serializer_test.rb +0 -137
  64. data/test/action_controller/json/include_test.rb +0 -248
  65. data/test/action_controller/json_api/deserialization_test.rb +0 -114
  66. data/test/action_controller/json_api/errors_test.rb +0 -42
  67. data/test/action_controller/json_api/fields_test.rb +0 -68
  68. data/test/action_controller/json_api/linked_test.rb +0 -204
  69. data/test/action_controller/json_api/pagination_test.rb +0 -126
  70. data/test/action_controller/json_api/transform_test.rb +0 -191
  71. data/test/action_controller/lookup_proc_test.rb +0 -51
  72. data/test/action_controller/namespace_lookup_test.rb +0 -234
  73. data/test/action_controller/serialization_scope_name_test.rb +0 -237
  74. data/test/action_controller/serialization_test.rb +0 -480
  75. data/test/active_model_serializers/adapter_for_test.rb +0 -210
  76. data/test/active_model_serializers/json_pointer_test.rb +0 -24
  77. data/test/active_model_serializers/logging_test.rb +0 -79
  78. data/test/active_model_serializers/model_test.rb +0 -144
  79. data/test/active_model_serializers/railtie_test_isolated.rb +0 -70
  80. data/test/active_model_serializers/register_jsonapi_renderer_test_isolated.rb +0 -163
  81. data/test/active_model_serializers/serialization_context_test_isolated.rb +0 -73
  82. data/test/active_model_serializers/test/schema_test.rb +0 -133
  83. data/test/active_model_serializers/test/serializer_test.rb +0 -64
  84. data/test/active_record_test.rb +0 -11
  85. data/test/adapter/attributes_test.rb +0 -42
  86. data/test/adapter/deprecation_test.rb +0 -102
  87. data/test/adapter/json/belongs_to_test.rb +0 -47
  88. data/test/adapter/json/collection_test.rb +0 -106
  89. data/test/adapter/json/has_many_test.rb +0 -55
  90. data/test/adapter/json/transform_test.rb +0 -95
  91. data/test/adapter/json_api/belongs_to_test.rb +0 -157
  92. data/test/adapter/json_api/collection_test.rb +0 -98
  93. data/test/adapter/json_api/errors_test.rb +0 -78
  94. data/test/adapter/json_api/fields_test.rb +0 -98
  95. data/test/adapter/json_api/has_many_explicit_serializer_test.rb +0 -98
  96. data/test/adapter/json_api/has_many_test.rb +0 -175
  97. data/test/adapter/json_api/has_one_test.rb +0 -82
  98. data/test/adapter/json_api/include_data_if_sideloaded_test.rb +0 -215
  99. data/test/adapter/json_api/json_api_test.rb +0 -35
  100. data/test/adapter/json_api/linked_test.rb +0 -415
  101. data/test/adapter/json_api/links_test.rb +0 -112
  102. data/test/adapter/json_api/pagination_links_test.rb +0 -208
  103. data/test/adapter/json_api/parse_test.rb +0 -139
  104. data/test/adapter/json_api/relationship_test.rb +0 -399
  105. data/test/adapter/json_api/resource_meta_test.rb +0 -102
  106. data/test/adapter/json_api/toplevel_jsonapi_test.rb +0 -84
  107. data/test/adapter/json_api/transform_test.rb +0 -514
  108. data/test/adapter/json_api/type_test.rb +0 -195
  109. data/test/adapter/json_test.rb +0 -48
  110. data/test/adapter/null_test.rb +0 -24
  111. data/test/adapter/polymorphic_test.rb +0 -220
  112. data/test/adapter_test.rb +0 -69
  113. data/test/array_serializer_test.rb +0 -24
  114. data/test/benchmark/app.rb +0 -67
  115. data/test/benchmark/benchmarking_support.rb +0 -69
  116. data/test/benchmark/bm_active_record.rb +0 -83
  117. data/test/benchmark/bm_adapter.rb +0 -40
  118. data/test/benchmark/bm_caching.rb +0 -121
  119. data/test/benchmark/bm_lookup_chain.rb +0 -85
  120. data/test/benchmark/bm_transform.rb +0 -47
  121. data/test/benchmark/config.ru +0 -3
  122. data/test/benchmark/controllers.rb +0 -85
  123. data/test/benchmark/fixtures.rb +0 -221
  124. data/test/cache_test.rb +0 -717
  125. data/test/collection_serializer_test.rb +0 -129
  126. data/test/fixtures/active_record.rb +0 -115
  127. data/test/fixtures/poro.rb +0 -227
  128. data/test/generators/scaffold_controller_generator_test.rb +0 -26
  129. data/test/generators/serializer_generator_test.rb +0 -77
  130. data/test/grape_test.rb +0 -198
  131. data/test/lint_test.rb +0 -51
  132. data/test/logger_test.rb +0 -22
  133. data/test/poro_test.rb +0 -11
  134. data/test/serializable_resource_test.rb +0 -81
  135. data/test/serializers/association_macros_test.rb +0 -39
  136. data/test/serializers/associations_test.rb +0 -520
  137. data/test/serializers/attribute_test.rb +0 -155
  138. data/test/serializers/attributes_test.rb +0 -54
  139. data/test/serializers/caching_configuration_test_isolated.rb +0 -172
  140. data/test/serializers/configuration_test.rb +0 -34
  141. data/test/serializers/fieldset_test.rb +0 -16
  142. data/test/serializers/meta_test.rb +0 -204
  143. data/test/serializers/options_test.rb +0 -34
  144. data/test/serializers/read_attribute_for_serialization_test.rb +0 -81
  145. data/test/serializers/reflection_test.rb +0 -481
  146. data/test/serializers/root_test.rb +0 -23
  147. data/test/serializers/serialization_test.rb +0 -57
  148. data/test/serializers/serializer_for_test.rb +0 -138
  149. data/test/serializers/serializer_for_with_namespace_test.rb +0 -90
  150. data/test/support/custom_schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  151. data/test/support/isolated_unit.rb +0 -86
  152. data/test/support/rails5_shims.rb +0 -55
  153. data/test/support/rails_app.rb +0 -40
  154. data/test/support/schemas/active_model_serializers/test/schema_test/my/index.json +0 -6
  155. data/test/support/schemas/active_model_serializers/test/schema_test/my/show.json +0 -6
  156. data/test/support/schemas/custom/show.json +0 -7
  157. data/test/support/schemas/hyper_schema.json +0 -93
  158. data/test/support/schemas/render_using_json_api.json +0 -43
  159. data/test/support/schemas/simple_json_pointers.json +0 -10
  160. data/test/support/serialization_testing.rb +0 -81
  161. data/test/test_helper.rb +0 -72
@@ -1,221 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Rails.configuration.serializers = []
4
- class HasOneRelationshipSerializer < ActiveModel::Serializer
5
- attributes :id, :first_name, :last_name
6
-
7
- has_many :primary_resources, embed: :ids
8
- has_one :bio
9
- end
10
- Rails.configuration.serializers << HasOneRelationshipSerializer
11
-
12
- class VirtualAttributeSerializer < ActiveModel::Serializer
13
- attributes :id, :name
14
- end
15
- Rails.configuration.serializers << VirtualAttributeSerializer
16
-
17
- class HasManyRelationshipSerializer < ActiveModel::Serializer
18
- attributes :id, :body
19
-
20
- belongs_to :primary_resource
21
- belongs_to :has_one_relationship
22
- end
23
- Rails.configuration.serializers << HasManyRelationshipSerializer
24
-
25
- class PrimaryResourceSerializer < ActiveModel::Serializer
26
- attributes :id, :title, :body
27
-
28
- has_many :has_many_relationships, serializer: HasManyRelationshipSerializer
29
- belongs_to :virtual_attribute, serializer: VirtualAttributeSerializer
30
- belongs_to :has_one_relationship, serializer: HasOneRelationshipSerializer
31
-
32
- link(:primary_resource_has_one_relationships) { 'https://example.com/primary_resource_has_one_relationships' }
33
-
34
- meta do
35
- {
36
- rating: 5,
37
- favorite_count: 10
38
- }
39
- end
40
-
41
- def virtual_attribute
42
- VirtualAttribute.new(id: 999, name: 'Free-Range Virtual Attribute')
43
- end
44
- end
45
- Rails.configuration.serializers << PrimaryResourceSerializer
46
-
47
- class CachingHasOneRelationshipSerializer < HasOneRelationshipSerializer
48
- cache key: 'writer', skip_digest: true
49
- end
50
- Rails.configuration.serializers << CachingHasOneRelationshipSerializer
51
-
52
- class CachingHasManyRelationshipSerializer < HasManyRelationshipSerializer
53
- cache expires_in: 1.day, skip_digest: true
54
- end
55
- Rails.configuration.serializers << CachingHasManyRelationshipSerializer
56
-
57
- # see https://github.com/rails-api/active_model_serializers/pull/1690/commits/68715b8f99bc29677e8a47bb3f305f23c077024b#r60344532
58
- class CachingPrimaryResourceSerializer < ActiveModel::Serializer
59
- cache key: 'primary_resource', expires_in: 0.1, skip_digest: true
60
-
61
- attributes :id, :title, :body
62
-
63
- belongs_to :virtual_attribute, serializer: VirtualAttributeSerializer
64
- belongs_to :has_one_relationship, serializer: CachingHasOneRelationshipSerializer
65
- has_many :has_many_relationships, serializer: CachingHasManyRelationshipSerializer
66
-
67
- link(:primary_resource_has_one_relationships) { 'https://example.com/primary_resource_has_one_relationships' }
68
-
69
- meta do
70
- {
71
- rating: 5,
72
- favorite_count: 10
73
- }
74
- end
75
-
76
- def virtual_attribute
77
- VirtualAttribute.new(id: 999, name: 'Free-Range Virtual Attribute')
78
- end
79
- end
80
- Rails.configuration.serializers << CachingPrimaryResourceSerializer
81
-
82
- class FragmentCachingHasOneRelationshipSerializer < HasOneRelationshipSerializer
83
- cache key: 'writer', only: [:first_name, :last_name], skip_digest: true
84
- end
85
- Rails.configuration.serializers << FragmentCachingHasOneRelationshipSerializer
86
-
87
- class FragmentCachingHasManyRelationshipSerializer < HasManyRelationshipSerializer
88
- cache expires_in: 1.day, except: [:body], skip_digest: true
89
- end
90
- Rails.configuration.serializers << CachingHasManyRelationshipSerializer
91
-
92
- # see https://github.com/rails-api/active_model_serializers/pull/1690/commits/68715b8f99bc29677e8a47bb3f305f23c077024b#r60344532
93
- class FragmentCachingPrimaryResourceSerializer < ActiveModel::Serializer
94
- cache key: 'primary_resource', expires_in: 0.1, skip_digest: true
95
-
96
- attributes :id, :title, :body
97
-
98
- belongs_to :virtual_attribute, serializer: VirtualAttributeSerializer
99
- belongs_to :has_one_relationship, serializer: FragmentCachingHasOneRelationshipSerializer
100
- has_many :has_many_relationships, serializer: FragmentCachingHasManyRelationshipSerializer
101
-
102
- link(:primary_resource_has_one_relationships) { 'https://example.com/primary_resource_has_one_relationships' }
103
-
104
- meta do
105
- {
106
- rating: 5,
107
- favorite_count: 10
108
- }
109
- end
110
-
111
- def virtual_attribute
112
- VirtualAttribute.new(id: 999, name: 'Free-Range Virtual Attribute')
113
- end
114
- end
115
- Rails.configuration.serializers << FragmentCachingPrimaryResourceSerializer
116
-
117
- if ENV['ENABLE_ACTIVE_RECORD'] == 'true'
118
- require 'active_record'
119
-
120
- ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
121
- ActiveRecord::Schema.define do
122
- self.verbose = false
123
-
124
- create_table :virtual_attributes, force: true do |t|
125
- t.string :name
126
- t.timestamps null: false
127
- end
128
- create_table :has_one_relationships, force: true do |t|
129
- t.string :first_name
130
- t.string :last_name
131
- t.timestamps null: false
132
- end
133
- create_table :primary_resources, force: true do |t|
134
- t.string :title
135
- t.text :body
136
- t.references :has_one_relationship
137
- t.references :virtual_attribute
138
- t.timestamps null: false
139
- end
140
- create_table :has_many_relationships, force: true do |t|
141
- t.text :body
142
- t.references :has_one_relationship
143
- t.references :primary_resource
144
- t.timestamps null: false
145
- end
146
- end
147
-
148
- class HasManyRelationship < ActiveRecord::Base
149
- belongs_to :has_one_relationship
150
- belongs_to :primary_resource
151
- end
152
-
153
- class HasOneRelationship < ActiveRecord::Base
154
- has_many :primary_resources
155
- has_many :has_many_relationships
156
- end
157
-
158
- class PrimaryResource < ActiveRecord::Base
159
- has_many :has_many_relationships
160
- belongs_to :has_one_relationship
161
- belongs_to :virtual_attribute
162
- end
163
-
164
- class VirtualAttribute < ActiveRecord::Base
165
- has_many :primary_resources
166
- end
167
- else
168
- # ActiveModelSerializers::Model is a convenient
169
- # serializable class to inherit from when making
170
- # serializable non-activerecord objects.
171
- class BenchmarkModel
172
- include ActiveModel::Model
173
- include ActiveModel::Serializers::JSON
174
-
175
- attr_reader :attributes
176
-
177
- def initialize(attributes = {})
178
- @attributes = attributes
179
- super
180
- end
181
-
182
- # Defaults to the downcased model name.
183
- def id
184
- attributes.fetch(:id) { self.class.name.downcase }
185
- end
186
-
187
- # Defaults to the downcased model name and updated_at
188
- def cache_key
189
- attributes.fetch(:cache_key) { "#{self.class.name.downcase}/#{id}" }
190
- end
191
-
192
- # Defaults to the time the serializer file was modified.
193
- def updated_at
194
- @updated_at ||= attributes.fetch(:updated_at) { File.mtime(__FILE__) }
195
- end
196
-
197
- def read_attribute_for_serialization(key)
198
- if key == :id || key == 'id'
199
- attributes.fetch(key) { id }
200
- else
201
- attributes[key]
202
- end
203
- end
204
- end
205
-
206
- class HasManyRelationship < BenchmarkModel
207
- attr_accessor :id, :body
208
- end
209
-
210
- class HasOneRelationship < BenchmarkModel
211
- attr_accessor :id, :first_name, :last_name, :primary_resources
212
- end
213
-
214
- class PrimaryResource < BenchmarkModel
215
- attr_accessor :id, :title, :body, :has_many_relationships, :virtual_attribute, :has_one_relationship
216
- end
217
-
218
- class VirtualAttribute < BenchmarkModel
219
- attr_accessor :id, :name
220
- end
221
- end