active_model_serializers 0.8.3 → 0.10.0.rc3

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 (124) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/.rubocop.yml +82 -0
  4. data/.rubocop_todo.yml +315 -0
  5. data/.simplecov +99 -0
  6. data/.travis.yml +26 -20
  7. data/CHANGELOG.md +14 -67
  8. data/CONTRIBUTING.md +31 -0
  9. data/Gemfile +45 -1
  10. data/{MIT-LICENSE.txt → LICENSE.txt} +3 -2
  11. data/README.md +186 -488
  12. data/Rakefile +33 -12
  13. data/active_model_serializers.gemspec +49 -23
  14. data/appveyor.yml +25 -0
  15. data/docs/README.md +29 -0
  16. data/docs/general/adapters.md +110 -0
  17. data/docs/general/configuration_options.md +11 -0
  18. data/docs/general/getting_started.md +73 -0
  19. data/docs/howto/add_pagination_links.md +112 -0
  20. data/docs/howto/add_root_key.md +51 -0
  21. data/docs/howto/outside_controller_use.md +42 -0
  22. data/lib/action_controller/serialization.rb +31 -31
  23. data/lib/active_model/serializable_resource.rb +70 -0
  24. data/lib/active_model/serializer/adapter/flatten_json.rb +12 -0
  25. data/lib/active_model/serializer/adapter/fragment_cache.rb +75 -0
  26. data/lib/active_model/serializer/adapter/json/fragment_cache.rb +5 -0
  27. data/lib/active_model/serializer/adapter/json.rb +47 -0
  28. data/lib/active_model/serializer/adapter/json_api/fragment_cache.rb +13 -0
  29. data/lib/active_model/serializer/adapter/json_api/pagination_links.rb +50 -0
  30. data/lib/active_model/serializer/adapter/json_api.rb +158 -0
  31. data/lib/active_model/serializer/adapter/null.rb +5 -0
  32. data/lib/active_model/serializer/adapter.rb +159 -0
  33. data/lib/active_model/serializer/array_serializer.rb +40 -0
  34. data/lib/active_model/serializer/association.rb +20 -0
  35. data/lib/active_model/serializer/associations.rb +83 -219
  36. data/lib/active_model/serializer/belongs_to_reflection.rb +10 -0
  37. data/lib/active_model/serializer/collection_reflection.rb +7 -0
  38. data/lib/active_model/serializer/configuration.rb +14 -0
  39. data/lib/active_model/serializer/fieldset.rb +40 -0
  40. data/lib/active_model/serializer/has_many_reflection.rb +10 -0
  41. data/lib/active_model/serializer/has_one_reflection.rb +10 -0
  42. data/lib/active_model/serializer/lint.rb +129 -0
  43. data/lib/active_model/serializer/railtie.rb +15 -0
  44. data/lib/active_model/serializer/reflection.rb +74 -0
  45. data/lib/active_model/serializer/singular_reflection.rb +7 -0
  46. data/lib/active_model/serializer/utils.rb +35 -0
  47. data/lib/active_model/{serializers → serializer}/version.rb +1 -1
  48. data/lib/active_model/serializer.rb +121 -465
  49. data/lib/active_model_serializers.rb +26 -88
  50. data/lib/generators/serializer/USAGE +0 -3
  51. data/lib/generators/serializer/resource_override.rb +12 -0
  52. data/lib/generators/serializer/serializer_generator.rb +8 -13
  53. data/lib/generators/serializer/templates/serializer.rb.erb +8 -0
  54. data/lib/tasks/rubocop.rake +0 -0
  55. data/test/action_controller/adapter_selector_test.rb +53 -0
  56. data/test/action_controller/explicit_serializer_test.rb +134 -0
  57. data/test/action_controller/json_api/linked_test.rb +179 -0
  58. data/test/action_controller/json_api/pagination_test.rb +116 -0
  59. data/test/{serialization_scope_name_test.rb → action_controller/serialization_scope_name_test.rb} +15 -15
  60. data/test/action_controller/serialization_test.rb +420 -0
  61. data/test/active_record_test.rb +9 -0
  62. data/test/adapter/fragment_cache_test.rb +37 -0
  63. data/test/adapter/json/belongs_to_test.rb +47 -0
  64. data/test/adapter/json/collection_test.rb +82 -0
  65. data/test/adapter/json/has_many_test.rb +47 -0
  66. data/test/adapter/json_api/belongs_to_test.rb +157 -0
  67. data/test/adapter/json_api/collection_test.rb +95 -0
  68. data/test/adapter/json_api/has_many_embed_ids_test.rb +45 -0
  69. data/test/adapter/json_api/has_many_explicit_serializer_test.rb +98 -0
  70. data/test/adapter/json_api/has_many_test.rb +145 -0
  71. data/test/adapter/json_api/has_one_test.rb +81 -0
  72. data/test/adapter/json_api/json_api_test.rb +37 -0
  73. data/test/adapter/json_api/linked_test.rb +283 -0
  74. data/test/adapter/json_api/pagination_links_test.rb +115 -0
  75. data/test/adapter/json_api/resource_type_config_test.rb +59 -0
  76. data/test/adapter/json_test.rb +47 -0
  77. data/test/adapter/null_test.rb +25 -0
  78. data/test/adapter_test.rb +42 -0
  79. data/test/array_serializer_test.rb +99 -73
  80. data/test/capture_warnings.rb +65 -0
  81. data/test/fixtures/active_record.rb +56 -0
  82. data/test/fixtures/poro.rb +261 -0
  83. data/test/generators/scaffold_controller_generator_test.rb +23 -0
  84. data/test/generators/serializer_generator_test.rb +56 -0
  85. data/test/lint_test.rb +37 -0
  86. data/test/logger_test.rb +18 -0
  87. data/test/poro_test.rb +9 -0
  88. data/test/serializable_resource_test.rb +27 -0
  89. data/test/serializers/adapter_for_test.rb +170 -0
  90. data/test/serializers/association_macros_test.rb +36 -0
  91. data/test/serializers/associations_test.rb +150 -0
  92. data/test/serializers/attribute_test.rb +62 -0
  93. data/test/serializers/attributes_test.rb +57 -0
  94. data/test/serializers/cache_test.rb +165 -0
  95. data/test/serializers/configuration_test.rb +15 -0
  96. data/test/serializers/fieldset_test.rb +25 -0
  97. data/test/serializers/meta_test.rb +121 -0
  98. data/test/serializers/options_test.rb +21 -0
  99. data/test/serializers/root_test.rb +21 -0
  100. data/test/serializers/serializer_for_test.rb +65 -0
  101. data/test/support/rails_app.rb +21 -0
  102. data/test/support/serialization_testing.rb +13 -0
  103. data/test/support/simplecov.rb +6 -0
  104. data/test/support/stream_capture.rb +50 -0
  105. data/test/support/test_case.rb +5 -0
  106. data/test/test_helper.rb +48 -24
  107. data/test/utils/include_args_to_hash_test.rb +79 -0
  108. metadata +219 -47
  109. data/DESIGN.textile +0 -586
  110. data/Gemfile.edge +0 -9
  111. data/bench/perf.rb +0 -43
  112. data/cruft.md +0 -19
  113. data/lib/active_model/array_serializer.rb +0 -104
  114. data/lib/active_record/serializer_override.rb +0 -16
  115. data/lib/generators/resource_override.rb +0 -13
  116. data/lib/generators/serializer/templates/serializer.rb +0 -19
  117. data/test/association_test.rb +0 -592
  118. data/test/caching_test.rb +0 -96
  119. data/test/generators_test.rb +0 -85
  120. data/test/no_serialization_scope_test.rb +0 -34
  121. data/test/serialization_test.rb +0 -392
  122. data/test/serializer_support_test.rb +0 -51
  123. data/test/serializer_test.rb +0 -1465
  124. data/test/test_fakes.rb +0 -217
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 94274a9d3a573ae8f656719aef33825cabb68673
4
- data.tar.gz: b1d614a90149ec109b67e963464c232d0b5ed3f1
3
+ metadata.gz: f97fe4e6870c3e3338fb3415b762d451f07f2b9d
4
+ data.tar.gz: a911ae55792f5fa60ddd9f198b21f3d9960d3647
5
5
  SHA512:
6
- metadata.gz: cc3140d1676014d8ce4aa0add253d247c55652a689cb83e7f7f7a71a81ae8d7c601fc5e2d261d415e243857a479a15156d0a84a67beb1c72475ef51c063cdfca
7
- data.tar.gz: cfc92ac9bb7dfca07cebdd32ef4a120aa5784cc7f1a6bfc8a65900b553be736b174b6bbf22fb7ebd55e8295ea1d118373245396e3c0ac883e954ab27e925bca2
6
+ metadata.gz: 639b8b33bd971772668ead59b6e38b7f0e2aa5f36c4c680876a9241aeaa51b77e70efdfc5d8af84f9bd3bf9b5646848a8b1ad30c3e0927a98ca14fe9106410f7
7
+ data.tar.gz: 9b61116bd804ea07f9294792e73d8736b3f06b5919739c304689bf0cf9d9ef7974467eb1fef4929a5ceb6ca9629d95067761428a6f8fa86cebb870bb4d1b3d05
data/.gitignore CHANGED
@@ -4,15 +4,20 @@
4
4
  .config
5
5
  .yardoc
6
6
  Gemfile.lock
7
+ Gemfile.local
7
8
  InstalledFiles
8
9
  _yardoc
9
10
  coverage
10
11
  doc/
11
12
  lib/bundler/man
12
13
  pkg
14
+ Vagrantfile
15
+ .vagrant
13
16
  rdoc
14
17
  spec/reports
15
18
  test/tmp
16
19
  test/version_tmp
17
20
  tmp
18
21
  *.swp
22
+ .ruby-version
23
+ .ruby-gemset
data/.rubocop.yml ADDED
@@ -0,0 +1,82 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ AllCops:
4
+ Exclude:
5
+ - config/initializers/forbidden_yaml.rb
6
+ - !ruby/regexp /(vendor|bundle|bin|db|tmp)\/.*/
7
+ RunRailsCops: true
8
+ DisplayCopNames: true
9
+ DisplayStyleGuide: true
10
+
11
+ Style/IndentationConsistency:
12
+ Exclude:
13
+ - lib/active_model/serializer/adapter/flatten_json.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/flatten_json.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/flatten_json.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
+
44
+ Lint/NestedMethodDefinition:
45
+ Enabled: false
46
+ Exclude:
47
+ - test/action_controller/serialization_test.rb
48
+
49
+ Style/StringLiterals:
50
+ EnforcedStyle: single_quotes
51
+
52
+ Metrics/AbcSize:
53
+ Max: 35 # TODO: Lower to 15
54
+
55
+ Metrics/ClassLength:
56
+ Max: 261 # TODO: Lower to 100
57
+ Exclude:
58
+ - test/**/*.rb
59
+
60
+ Metrics/CyclomaticComplexity:
61
+ Max: 7 # TODO: Lower to 6
62
+
63
+ Metrics/LineLength:
64
+ Max: 251 # TODO: Lower to 80
65
+
66
+ Metrics/MethodLength:
67
+ Max: 106 # TODO: Lower to 10
68
+
69
+ Metrics/PerceivedComplexity:
70
+ Max: 9 # TODO: Lower to 7
71
+
72
+ Style/AlignParameters:
73
+ EnforcedStyle: with_fixed_indentation
74
+
75
+ Style/ClassAndModuleChildren:
76
+ EnforcedStyle: compact
77
+
78
+ Style/Documentation:
79
+ Enabled: false
80
+
81
+ Style/MultilineOperationIndentation:
82
+ EnforcedStyle: indented
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,315 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2015-08-31 04:23:33 -0500 using RuboCop version 0.33.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ # Configuration parameters: AllowSafeAssignment.
11
+ Lint/AssignmentInCondition:
12
+ Exclude:
13
+ - 'lib/active_model/serializer/adapter/json_api.rb'
14
+
15
+ # Offense count: 1
16
+ Lint/EmptyEnsure:
17
+ Exclude:
18
+ - 'test/serializers/adapter_for_test.rb'
19
+
20
+ # Offense count: 1
21
+ Lint/HandleExceptions:
22
+ Exclude:
23
+ - 'Rakefile'
24
+
25
+ # Offense count: 2
26
+ # Cop supports --auto-correct.
27
+ Lint/UnusedBlockArgument:
28
+ Exclude:
29
+ - 'lib/active_model/serializer/adapter/json_api/fragment_cache.rb'
30
+
31
+ # Offense count: 9
32
+ # Cop supports --auto-correct.
33
+ Lint/UnusedMethodArgument:
34
+ Exclude:
35
+ - 'lib/active_model/serializer/adapter.rb'
36
+ - 'lib/active_model/serializer/adapter/null.rb'
37
+ - 'lib/active_model/serializer/pass_through_serializer.rb'
38
+ - 'test/fixtures/poro.rb'
39
+ - 'test/lint_test.rb'
40
+
41
+ # Offense count: 1
42
+ Lint/UselessAccessModifier:
43
+ Exclude:
44
+ - 'lib/active_model/serializable_resource.rb'
45
+
46
+ # Offense count: 3
47
+ Lint/UselessAssignment:
48
+ Exclude:
49
+ - 'bench/perf.rb'
50
+ - 'lib/active_model/serializer/adapter/json_api/fragment_cache.rb'
51
+ - 'test/test_helper.rb'
52
+
53
+ # Offense count: 1
54
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
55
+ Rails/Date:
56
+ Exclude:
57
+ - 'test/fixtures/poro.rb'
58
+
59
+ # Offense count: 8
60
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
61
+ Rails/TimeZone:
62
+ Exclude:
63
+ - 'test/action_controller/serialization_test.rb'
64
+ - 'test/fixtures/poro.rb'
65
+ - 'test/serializers/cache_test.rb'
66
+
67
+ # Offense count: 16
68
+ # Cop supports --auto-correct.
69
+ # Configuration parameters: EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle, SupportedLastArgumentHashStyles.
70
+ Style/AlignHash:
71
+ Exclude:
72
+ - 'test/action_controller/json_api/pagination_test.rb'
73
+
74
+ # Offense count: 1
75
+ # Cop supports --auto-correct.
76
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
77
+ Style/AndOr:
78
+ Exclude:
79
+ - 'lib/active_model/serializer/lint.rb'
80
+
81
+ # Offense count: 6
82
+ # Cop supports --auto-correct.
83
+ # Configuration parameters: EnforcedStyle, SupportedStyles, ProceduralMethods, FunctionalMethods, IgnoredMethods.
84
+ Style/BlockDelimiters:
85
+ Enabled: false
86
+
87
+ # Offense count: 46
88
+ # Cop supports --auto-correct.
89
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
90
+ Style/BracesAroundHashParameters:
91
+ Exclude:
92
+ - 'test/action_controller/adapter_selector_test.rb'
93
+ - 'test/action_controller/json_api/pagination_test.rb'
94
+ - 'test/action_controller/serialization_test.rb'
95
+ - 'test/adapter/json_api/linked_test.rb'
96
+ - 'test/adapter/json_api/pagination_links_test.rb'
97
+ - 'test/adapter/null_test.rb'
98
+ - 'test/adapter_test.rb'
99
+ - 'test/array_serializer_test.rb'
100
+ - 'test/serializable_resource_test.rb'
101
+ - 'test/serializers/associations_test.rb'
102
+ - 'test/serializers/attribute_test.rb'
103
+ - 'test/serializers/attributes_test.rb'
104
+ - 'test/serializers/fieldset_test.rb'
105
+ - 'test/serializers/root_test.rb'
106
+ - 'test/serializers/urls_test.rb'
107
+
108
+ # Offense count: 167
109
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
110
+ Style/ClassAndModuleChildren:
111
+ Enabled: false
112
+
113
+ # Offense count: 5
114
+ # Cop supports --auto-correct.
115
+ Style/CommentIndentation:
116
+ Exclude:
117
+ - 'active_model_serializers.gemspec'
118
+
119
+ # Offense count: 1
120
+ Style/DoubleNegation:
121
+ Exclude:
122
+ - 'lib/active_model/serializable_resource.rb'
123
+
124
+ # Offense count: 1
125
+ Style/EachWithObject:
126
+ Exclude:
127
+ - 'lib/active_model/serializer/fieldset.rb'
128
+
129
+ # Offense count: 3
130
+ # Configuration parameters: MinBodyLength.
131
+ Style/GuardClause:
132
+ Exclude:
133
+ - 'lib/active_model/serializer.rb'
134
+ - 'lib/active_model/serializer/adapter/json_api.rb'
135
+ - 'test/capture_warnings.rb'
136
+
137
+ # Offense count: 12
138
+ # Cop supports --auto-correct.
139
+ # Configuration parameters: EnforcedStyle, SupportedStyles, UseHashRocketsWithSymbolValues.
140
+ Style/HashSyntax:
141
+ Enabled: false
142
+
143
+ # Offense count: 9
144
+ # Cop supports --auto-correct.
145
+ Style/IndentArray:
146
+ Exclude:
147
+ - 'test/adapter/json/has_many_test.rb'
148
+ - 'test/adapter/json_api/json_api_test.rb'
149
+ - 'test/adapter/json_api/pagination_links_test.rb'
150
+ - 'test/adapter/json_test.rb'
151
+
152
+ # Offense count: 8
153
+ # Cop supports --auto-correct.
154
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
155
+ Style/IndentHash:
156
+ Enabled: false
157
+
158
+ # Offense count: 1
159
+ # Cop supports --auto-correct.
160
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
161
+ Style/IndentationConsistency:
162
+ Exclude:
163
+ - 'test/action_controller/serialization_scope_name_test.rb'
164
+
165
+ # Offense count: 2
166
+ # Cop supports --auto-correct.
167
+ # Configuration parameters: Width.
168
+ Style/IndentationWidth:
169
+ Exclude:
170
+ - 'lib/active_model/serializable_resource.rb'
171
+ - 'lib/active_model/serializer/fieldset.rb'
172
+
173
+ # Offense count: 1
174
+ # Cop supports --auto-correct.
175
+ Style/Lambda:
176
+ Exclude:
177
+ - 'lib/active_model/serializer.rb'
178
+
179
+ # Offense count: 2
180
+ # Cop supports --auto-correct.
181
+ Style/MethodCallParentheses:
182
+ Exclude:
183
+ - 'lib/active_model/serializer/adapter/json.rb'
184
+ - 'lib/active_model/serializer/adapter/json_api.rb'
185
+
186
+ # Offense count: 1
187
+ # Cop supports --auto-correct.
188
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
189
+ Style/MethodDefParentheses:
190
+ Enabled: false
191
+
192
+ # Offense count: 3
193
+ # Cop supports --auto-correct.
194
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
195
+ Style/MultilineOperationIndentation:
196
+ Enabled: false
197
+
198
+ # Offense count: 1
199
+ # Cop supports --auto-correct.
200
+ Style/NegatedIf:
201
+ Exclude:
202
+ - 'lib/action_controller/serialization.rb'
203
+
204
+ # Offense count: 1
205
+ # Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles.
206
+ Style/Next:
207
+ Exclude:
208
+ - 'lib/active_model/serializer/adapter/json_api.rb'
209
+
210
+ # Offense count: 1
211
+ # Cop supports --auto-correct.
212
+ Style/NumericLiterals:
213
+ MinDigits: 7
214
+
215
+ # Offense count: 2
216
+ # Cop supports --auto-correct.
217
+ # Configuration parameters: PreferredDelimiters.
218
+ Style/PercentLiteralDelimiters:
219
+ Exclude:
220
+ - 'active_model_serializers.gemspec'
221
+
222
+ # Offense count: 2
223
+ # Cop supports --auto-correct.
224
+ Style/PerlBackrefs:
225
+ Exclude:
226
+ - 'test/fixtures/poro.rb'
227
+ - 'test/serializers/associations_test.rb'
228
+
229
+ # Offense count: 6
230
+ # Configuration parameters: NamePrefix, NamePrefixBlacklist.
231
+ Style/PredicateName:
232
+ Exclude:
233
+ - 'lib/active_model/serializer/adapter.rb'
234
+ - 'lib/active_model/serializer/adapter/json_api.rb'
235
+ - 'lib/active_model/serializer/associations.rb'
236
+ - 'test/action_controller/json_api/linked_test.rb'
237
+
238
+ # Offense count: 7
239
+ # Cop supports --auto-correct.
240
+ Style/RedundantSelf:
241
+ Exclude:
242
+ - 'lib/active_model/serializer.rb'
243
+ - 'lib/active_model/serializer/associations.rb'
244
+ - 'test/fixtures/poro.rb'
245
+
246
+ # Offense count: 1
247
+ # Cop supports --auto-correct.
248
+ # Configuration parameters: AllowAsExpressionSeparator.
249
+ Style/Semicolon:
250
+ Exclude:
251
+ - 'lib/active_model/serializer/fieldset.rb'
252
+
253
+ # Offense count: 6
254
+ # Cop supports --auto-correct.
255
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
256
+ Style/SignalException:
257
+ Exclude:
258
+ - 'lib/active_model/serializer.rb'
259
+ - 'lib/active_model/serializer/adapter.rb'
260
+ - 'lib/active_model/serializer/fieldset.rb'
261
+ - 'lib/active_model/serializer/pass_through_serializer.rb'
262
+
263
+ # Offense count: 1
264
+ # Cop supports --auto-correct.
265
+ # Configuration parameters: AllowIfMethodIsEmpty.
266
+ Style/SingleLineMethods:
267
+ Exclude:
268
+ - 'test/serializers/serializer_for_test.rb'
269
+
270
+ # Offense count: 2
271
+ # Cop supports --auto-correct.
272
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
273
+ Style/StringLiteralsInInterpolation:
274
+ Enabled: false
275
+
276
+ # Offense count: 1
277
+ Style/StructInheritance:
278
+ Exclude:
279
+ - 'bench/perf.rb'
280
+
281
+ # Offense count: 1
282
+ # Cop supports --auto-correct.
283
+ # Configuration parameters: IgnoredMethods.
284
+ Style/SymbolProc:
285
+ Exclude:
286
+ - 'lib/generators/serializer/serializer_generator.rb'
287
+
288
+ # Offense count: 8
289
+ # Cop supports --auto-correct.
290
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
291
+ Style/TrailingBlankLines:
292
+ Exclude:
293
+ - 'lib/active_model/serializer/pass_through_serializer.rb'
294
+ - 'lib/generators/serializer/serializer_generator.rb'
295
+ - 'test/adapter/fragment_cache_test.rb'
296
+ - 'test/adapter/json_api/json_api_test.rb'
297
+ - 'test/adapter/null_test.rb'
298
+ - 'test/serializers/cache_test.rb'
299
+ - 'test/serializers/fieldset_test.rb'
300
+ - 'test/support/stream_capture.rb'
301
+
302
+ # Offense count: 6
303
+ # Cop supports --auto-correct.
304
+ # Configuration parameters: EnforcedStyleForMultiline, SupportedStyles.
305
+ Style/TrailingComma:
306
+ Exclude:
307
+ - 'test/action_controller/adapter_selector_test.rb'
308
+ - 'test/action_controller/serialization_test.rb'
309
+ - 'test/adapter/json_api/belongs_to_test.rb'
310
+ - 'test/adapter/json_api/linked_test.rb'
311
+
312
+ # Offense count: 1
313
+ Style/UnlessElse:
314
+ Exclude:
315
+ - 'lib/active_model/serializer.rb'
data/.simplecov ADDED
@@ -0,0 +1,99 @@
1
+ # https://github.com/colszowka/simplecov#using-simplecov-for-centralized-config
2
+ # see https://github.com/colszowka/simplecov/blob/master/lib/simplecov/defaults.rb
3
+ # vim: set ft=ruby
4
+
5
+ ## DEFINE VARIABLES
6
+ @minimum_coverage = ENV.fetch('COVERAGE_MINIMUM') {
7
+ case (defined?(RUBY_ENGINE) && RUBY_ENGINE) || "ruby"
8
+ when 'jruby', 'rbx'
9
+ 96.0
10
+ else
11
+ 98.1
12
+ end
13
+ }.to_f.round(2)
14
+ # rubocop:disable Style/DoubleNegation
15
+ ENV['FULL_BUILD'] ||= ENV['CI']
16
+ @running_ci = !!(ENV['FULL_BUILD'] =~ /\Atrue\z/i)
17
+ @generate_report = @running_ci || !!(ENV['COVERAGE'] =~ /\Atrue\z/i)
18
+ @output = STDOUT
19
+ # rubocop:enable Style/DoubleNegation
20
+
21
+ ## CONFIGURE SIMPLECOV
22
+ SimpleCov.pid = $$ # In case there's any forking
23
+
24
+ SimpleCov.profiles.define 'app' do
25
+ coverage_dir 'coverage'
26
+ load_profile 'test_frameworks'
27
+
28
+ add_group 'Libraries', 'lib'
29
+
30
+ add_group 'Long files' do |src_file|
31
+ src_file.lines.count > 100
32
+ end
33
+ class MaxLinesFilter < SimpleCov::Filter
34
+ def matches?(source_file)
35
+ source_file.lines.count < filter_argument
36
+ end
37
+ end
38
+ add_group 'Short files', MaxLinesFilter.new(5)
39
+
40
+ # Exclude these paths from analysis
41
+ add_filter '/config/'
42
+ add_filter '/db/'
43
+ add_filter 'tasks'
44
+ end
45
+
46
+ ## START TRACKING COVERAGE (before activating SimpleCov)
47
+ require 'coverage'
48
+ Coverage.start
49
+
50
+ ## ADD SOME CUSTOM REPORTING AT EXIT
51
+ SimpleCov.at_exit do
52
+ header = "#{'*' * 20} SimpleCov Results #{'*' * 20}"
53
+ @output.puts
54
+ @output.puts header
55
+ @output.puts SimpleCov.result.format!
56
+ percent = Float(SimpleCov.result.covered_percent)
57
+ if percent < @minimum_coverage
58
+ @output.puts "Spec coverage was not high enough: "\
59
+ "#{percent.round(2)} is < #{@minimum_coverage}%\n"
60
+ exit 1 if @generate_report
61
+ else
62
+ @output.puts "Nice job! Spec coverage (#{percent.round(2)}) "\
63
+ "is still at or above #{@minimum_coverage}%\n"
64
+ end
65
+ @output.puts
66
+ @output.puts '*' * header.size
67
+ end
68
+
69
+ ## CAPTURE CONFIG IN CLOSURE 'AppCoverage.start'
70
+ ## to defer running until test/test_helper.rb is loaded.
71
+ # rubocop:disable Style/MultilineBlockChain
72
+ AppCoverage = Class.new do
73
+ def initialize(&block)
74
+ @block = block
75
+ end
76
+
77
+ def start
78
+ @block.call
79
+ end
80
+ end.new do
81
+ SimpleCov.start 'app'
82
+ if @generate_report
83
+ if @running_ci
84
+ require 'codeclimate-test-reporter'
85
+ @output.puts '[COVERAGE] Running with SimpleCov Simple Formatter and CodeClimate Test Reporter'
86
+ formatters = [
87
+ SimpleCov::Formatter::SimpleFormatter,
88
+ CodeClimate::TestReporter::Formatter
89
+ ]
90
+ else
91
+ @output.puts '[COVERAGE] Running with SimpleCov HTML Formatter'
92
+ formatters = [SimpleCov::Formatter::HTMLFormatter]
93
+ end
94
+ else
95
+ formatters = []
96
+ end
97
+ SimpleCov.formatters = formatters
98
+ end
99
+ # rubocop:enable Style/MultilineBlockChain
data/.travis.yml CHANGED
@@ -1,28 +1,34 @@
1
1
  language: ruby
2
+
3
+ sudo: false
4
+
5
+ cache:
6
+ bundler: true
7
+
2
8
  rvm:
3
- - 1.8.7
4
- - 1.9.2
5
9
  - 1.9.3
6
10
  - 2.0.0
7
- - ree
8
- - jruby-18mode
11
+ - 2.1
12
+ - 2.2
9
13
  - jruby-19mode
10
14
  - rbx-2
11
- gemfile:
12
- - Gemfile
13
- - Gemfile.edge
15
+ - ruby-head
16
+
17
+ install:
18
+ - bundle install --retry=3
19
+
20
+ script:
21
+ - bundle exec rake
22
+ - bundle exec rake rubocop
23
+
24
+ env:
25
+ - "RAILS_VERSION=4.0"
26
+ - "RAILS_VERSION=4.1"
27
+ - "RAILS_VERSION=4.2"
28
+ - "RAILS_VERSION=master"
29
+
14
30
  matrix:
15
31
  allow_failures:
16
- - gemfile: Gemfile.edge
17
- exclude:
18
- # Edge Rails is only compatible with 1.9.3
19
- - gemfile: Gemfile.edge
20
- rvm: 1.8.7
21
- - gemfile: Gemfile.edge
22
- rvm: 1.9.2
23
- - gemfile: Gemfile.edge
24
- rvm: ree
25
- - gemfile: Gemfile.edge
26
- rvm: jruby-18mode
27
- - gemfile: Gemfile.edge
28
- rvm: rbx-18mode
32
+ - rvm: ruby-head
33
+ - env: "RAILS_VERSION=master"
34
+ fast_finish: true
data/CHANGELOG.md CHANGED
@@ -1,67 +1,14 @@
1
- # UNRELEASED
2
-
3
- # VERSION 0.8.1
4
-
5
- * Fix bug whereby a serializer using 'options' would blow up.
6
-
7
- # VERSION 0.8.0
8
-
9
- * Attributes can now have optional types.
10
-
11
- * A new DefaultSerializer ensures that POROs behave the same way as ActiveModels.
12
-
13
- * If you wish to override ActiveRecord::Base#to_Json, you can now require
14
- 'active_record/serializer_override'. We don't recommend you do this, but
15
- many users do, so we've left it optional.
16
-
17
- * Fixed a bug where ActionController wouldn't always have MimeResponds.
18
-
19
- * An optinal caching feature allows you to cache JSON & hashes that AMS uses.
20
- Adding 'cached true' to your Serializers will turn on this cache.
21
-
22
- * URL helpers used inside of Engines now work properly.
23
-
24
- * Serializers now can filter attributes with `only` and `except`:
25
-
26
- ```
27
- UserSerializer.new(user, only: [:first_name, :last_name])
28
- UserSerializer.new(user, except: :first_name)
29
- ```
30
-
31
- * Basic Mongoid support. We now include our mixins in the right place.
32
-
33
- * On Ruby 1.8, we now generate an `id` method that properly serializes `id`
34
- columns. See issue #127 for more.
35
-
36
- * Add an alias for `scope` method to be the name of the context. By default
37
- this is `current_user`. The name is automatically set when using
38
- `serialization_scope` in the controller.
39
-
40
- * Pass through serialization options (such as `:include`) when a model
41
- has no serializer defined.
42
-
43
- # VERSION 0.7.0
44
-
45
- * ```embed_key``` option to allow embedding by attributes other than IDs
46
- * Fix rendering nil with custom serializer
47
- * Fix global ```self.root = false```
48
- * Add support for specifying the serializer for an association as a String
49
- * Able to specify keys on the attributes method
50
- * Serializer Reloading via ActiveSupport::DescendantsTracker
51
- * Reduce double map to once; Fixes datamapper eager loading.
52
-
53
- # VERSION 0.6.0
54
-
55
- * Serialize sets properly
56
- * Add root option to ArraySerializer
57
- * Support polymorphic associations
58
- * Support :each_serializer in ArraySerializer
59
- * Add `scope` method to easily access the scope in the serializer
60
- * Fix regression with Rails 3.2.6; add Rails 4 support
61
- * Allow serialization_scope to be disabled with serialization_scope nil
62
- * Array serializer should support pure ruby objects besides serializers
63
-
64
- # VERSION 0.5.0 (May 16, 2012)
65
-
66
- * First tagged version
67
- * Changes generators to always generate an ApplicationSerializer
1
+ ### 0.10.0
2
+
3
+ * adds adapters pattern
4
+ * adds support for `meta` and `meta_key` [@kurko]
5
+ * adds method to override association [@kurko]
6
+ * adds `has_one` attribute for backwards compatibility [@ggordon]
7
+ * adds JSON API support 1.0 [@benedikt]
8
+ * adds fragment cache support [@joaomdmoura]
9
+ * adds cache support to attributes and associations [@joaomdmoura]
10
+ * uses model name to determine the type [@lsylvester]
11
+ * remove root key option and split JSON adapter [@joaomdmoura]
12
+ * adds FlattenJSON as default adapter [@joaomdmoura]
13
+ * adds support for `pagination links` at top level of JsonApi adapter [@bacarini]
14
+ * adds extended format for `include` option to JSONAPI adapter [@beauby]