active_model_serializers 0.10.9 → 0.10.13

Sign up to get free protection for your applications and to get access to all the features.
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