grape-entity 0.8.1 → 0.8.2
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +21 -63
- data/.rubocop_todo.yml +2 -8
- data/.travis.yml +5 -4
- data/CHANGELOG.md +29 -0
- data/Gemfile +1 -1
- data/UPGRADING.md +31 -2
- data/lib/grape_entity.rb +1 -0
- data/lib/grape_entity/condition/base.rb +1 -1
- data/lib/grape_entity/deprecated.rb +13 -0
- data/lib/grape_entity/entity.rb +8 -1
- data/lib/grape_entity/exposure/base.rb +2 -4
- data/lib/grape_entity/exposure/nesting_exposure.rb +1 -0
- data/lib/grape_entity/exposure/nesting_exposure/nested_exposures.rb +2 -0
- data/lib/grape_entity/exposure/nesting_exposure/output_builder.rb +4 -0
- data/lib/grape_entity/version.rb +1 -1
- data/spec/grape_entity/entity_spec.rb +41 -14
- data/spec/spec_helper.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aa38cbc30d489d88e91c10c688c581251392a448330eca12ff79ebe22958bd9c
|
|
4
|
+
data.tar.gz: a96f1d0ada161d659f71aaca4e44588afc2727f4966e3f46058189483d46aa0c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 12f8a447cf4f297bb4c07375d08efa41e5d1691a907ccbfdc7cef8c2f394cfc03a041318f76ab2475089b5d1b7438414cd00dca6305105bf616b3c2465b1c000
|
|
7
|
+
data.tar.gz: 0a7c13fec63e43adb8269d0639c1e4abfef77cba02a3a7b234716588e968116e1875e94bab08f68cdec60e656b65f159d42f308342eeac6f42846a6f5aec9b27
|
data/.rubocop.yml
CHANGED
|
@@ -5,6 +5,8 @@ AllCops:
|
|
|
5
5
|
- vendor/**/*
|
|
6
6
|
- example/**/*
|
|
7
7
|
TargetRubyVersion: 2.7
|
|
8
|
+
UseCache: true
|
|
9
|
+
NewCops: enable
|
|
8
10
|
|
|
9
11
|
# Layout stuff
|
|
10
12
|
#
|
|
@@ -27,25 +29,18 @@ Layout/SpaceAroundMethodCallOperator:
|
|
|
27
29
|
|
|
28
30
|
# Lint stuff
|
|
29
31
|
#
|
|
30
|
-
Lint/
|
|
31
|
-
Enabled: true
|
|
32
|
-
|
|
33
|
-
Lint/DuplicateElsifCondition:
|
|
34
|
-
Enabled: true
|
|
35
|
-
|
|
36
|
-
Lint/MixedRegexpCaptureTypes:
|
|
37
|
-
Enabled: true
|
|
38
|
-
|
|
39
|
-
Lint/RaiseException:
|
|
40
|
-
Enabled: true
|
|
41
|
-
|
|
42
|
-
Lint/StructNewOverride:
|
|
32
|
+
Lint/ConstantDefinitionInBlock:
|
|
43
33
|
Enabled: true
|
|
34
|
+
Exclude:
|
|
35
|
+
- spec/**/*
|
|
44
36
|
|
|
45
37
|
# Metrics stuff
|
|
46
38
|
#
|
|
47
39
|
Metrics/AbcSize:
|
|
48
40
|
Max: 25
|
|
41
|
+
IgnoredMethods:
|
|
42
|
+
# from lib/grape_entity/exposure/nesting_exposure.rb
|
|
43
|
+
- 'normalized_exposures'
|
|
49
44
|
|
|
50
45
|
Metrics/BlockLength:
|
|
51
46
|
Exclude:
|
|
@@ -64,6 +59,12 @@ Metrics/MethodLength:
|
|
|
64
59
|
|
|
65
60
|
Metrics/PerceivedComplexity:
|
|
66
61
|
Max: 11
|
|
62
|
+
IgnoredMethods:
|
|
63
|
+
# from lib/grape_entity/entity.rb
|
|
64
|
+
- 'expose'
|
|
65
|
+
- 'merge_options'
|
|
66
|
+
# from lib/grape_entity/exposure/nesting_exposure.rb
|
|
67
|
+
- 'normalized_exposures'
|
|
67
68
|
|
|
68
69
|
# Naming stuff
|
|
69
70
|
#
|
|
@@ -73,56 +74,13 @@ Naming:
|
|
|
73
74
|
|
|
74
75
|
# Style stuff
|
|
75
76
|
#
|
|
76
|
-
Style/AccessorGrouping:
|
|
77
|
-
Enabled: true
|
|
78
|
-
|
|
79
|
-
Style/ArrayCoercion:
|
|
80
|
-
Enabled: true
|
|
81
|
-
|
|
82
|
-
Style/BisectedAttrAccessor:
|
|
83
|
-
Enabled: true
|
|
84
|
-
|
|
85
|
-
Style/CaseLikeIf:
|
|
86
|
-
Enabled: true
|
|
87
|
-
|
|
88
77
|
Style/Documentation:
|
|
89
78
|
Enabled: false
|
|
90
79
|
|
|
91
|
-
Style/
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
Enabled: true
|
|
99
|
-
|
|
100
|
-
Style/HashLikeCase:
|
|
101
|
-
Enabled: true
|
|
102
|
-
|
|
103
|
-
Style/HashTransformKeys:
|
|
104
|
-
Enabled: true
|
|
105
|
-
|
|
106
|
-
Style/HashTransformValues:
|
|
107
|
-
Enabled: true
|
|
108
|
-
|
|
109
|
-
Style/RedundantAssignment:
|
|
110
|
-
Enabled: true
|
|
111
|
-
|
|
112
|
-
Style/RedundantFetchBlock:
|
|
113
|
-
Enabled: true
|
|
114
|
-
|
|
115
|
-
Style/RedundantFileExtensionInRequire:
|
|
116
|
-
Enabled: true
|
|
117
|
-
|
|
118
|
-
Style/RedundantRegexpCharacterClass:
|
|
119
|
-
Enabled: true
|
|
120
|
-
|
|
121
|
-
Style/RedundantRegexpEscape:
|
|
122
|
-
Enabled: true
|
|
123
|
-
|
|
124
|
-
Style/RegexpLiteral:
|
|
125
|
-
Enabled: false
|
|
126
|
-
|
|
127
|
-
Style/SlicingWithRange:
|
|
128
|
-
Enabled: true
|
|
80
|
+
Style/OptionalBooleanParameter:
|
|
81
|
+
AllowedMethods:
|
|
82
|
+
# from lib/grape_entity/condition/base.rb
|
|
83
|
+
- 'initialize'
|
|
84
|
+
# form lib/grape_entity/entity.rb
|
|
85
|
+
- 'entity_class'
|
|
86
|
+
- 'present_collection'
|
data/.rubocop_todo.yml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# This configuration was generated by
|
|
2
2
|
# `rubocop --auto-gen-config`
|
|
3
|
-
# on 2020-
|
|
3
|
+
# on 2020-11-07 00:01:40 UTC using RuboCop version 1.2.0.
|
|
4
4
|
# The point is for the user to remove these configuration records
|
|
5
5
|
# one by one as the offenses are removed from the code base.
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
|
@@ -14,17 +14,11 @@ Gemspec/RequiredRubyVersion:
|
|
|
14
14
|
- 'grape-entity.gemspec'
|
|
15
15
|
|
|
16
16
|
# Offense count: 6
|
|
17
|
+
# Cop supports --auto-correct.
|
|
17
18
|
Lint/BooleanSymbol:
|
|
18
19
|
Exclude:
|
|
19
20
|
- 'spec/grape_entity/exposure_spec.rb'
|
|
20
21
|
|
|
21
|
-
# Offense count: 1
|
|
22
|
-
# Configuration parameters: EnforcedStyle.
|
|
23
|
-
# SupportedStyles: inline, group
|
|
24
|
-
Style/AccessModifierDeclarations:
|
|
25
|
-
Exclude:
|
|
26
|
-
- 'spec/grape_entity/entity_spec.rb'
|
|
27
|
-
|
|
28
22
|
# Offense count: 1
|
|
29
23
|
# Cop supports --auto-correct.
|
|
30
24
|
# Configuration parameters: IgnoredMethods.
|
data/.travis.yml
CHANGED
|
@@ -9,17 +9,18 @@ after_success:
|
|
|
9
9
|
rvm:
|
|
10
10
|
- 2.5.8
|
|
11
11
|
- 2.6.6
|
|
12
|
-
- 2.7.
|
|
12
|
+
- 2.7.2
|
|
13
13
|
- ruby-head
|
|
14
14
|
- jruby-head
|
|
15
|
+
- truffleruby-head
|
|
16
|
+
- 2.4.10
|
|
17
|
+
|
|
15
18
|
|
|
16
19
|
matrix:
|
|
17
20
|
fast_finish: true
|
|
18
21
|
|
|
19
|
-
include:
|
|
20
|
-
- rvm: 2.4.10
|
|
21
|
-
|
|
22
22
|
allow_failures:
|
|
23
23
|
- rvm: 2.4.10
|
|
24
24
|
- rvm: ruby-head
|
|
25
25
|
- rvm: jruby-head
|
|
26
|
+
- rvm: truffleruby-head
|
data/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,15 @@
|
|
|
8
8
|
|
|
9
9
|
* Your contribution here.
|
|
10
10
|
|
|
11
|
+
|
|
12
|
+
### 0.8.2 (2020-11-08)
|
|
13
|
+
|
|
14
|
+
#### Fixes
|
|
15
|
+
|
|
16
|
+
* [#340](https://github.com/ruby-grape/grape-entity/pull/340): Preparations for 3.0 - [@LeFnord](https://github.com/LeFnord).
|
|
17
|
+
* [#338](https://github.com/ruby-grape/grape-entity/pull/338): Fix ruby 2.7 deprecation warning - [@begotten63](https://github.com/begotten63).
|
|
18
|
+
|
|
19
|
+
|
|
11
20
|
### 0.8.1 (2020-07-15)
|
|
12
21
|
|
|
13
22
|
#### Fixes
|
|
@@ -15,6 +24,7 @@
|
|
|
15
24
|
* [#336](https://github.com/ruby-grape/grape-entity/pull/336): Pass options to delegators when they accept it - [@dnesteryuk](https://github.com/dnesteryuk).
|
|
16
25
|
* [#333](https://github.com/ruby-grape/grape-entity/pull/333): Fix typo in CHANGELOG.md - [@eitoball](https://github.com/eitoball).
|
|
17
26
|
|
|
27
|
+
|
|
18
28
|
### 0.8.0 (2020-02-18)
|
|
19
29
|
|
|
20
30
|
#### Features
|
|
@@ -30,12 +40,14 @@
|
|
|
30
40
|
* [#320](https://github.com/ruby-grape/grape-entity/pull/320): Gemspec: drop eol'd property rubyforge_project - [@olleolleolle](https://github.com/olleolleolle).
|
|
31
41
|
* [#307](https://github.com/ruby-grape/grape-entity/pull/307): Allow exposures to call methods defined in modules included in an entity - [@robertoz-01](https://github.com/robertoz-01).
|
|
32
42
|
|
|
43
|
+
|
|
33
44
|
### 0.7.1 (2018-01-30)
|
|
34
45
|
|
|
35
46
|
#### Features
|
|
36
47
|
|
|
37
48
|
* [#297](https://github.com/ruby-grape/grape-entity/pull/297): Introduce `override` option for expose (fixes [#286](https://github.com/ruby-grape/grape-entity/issues/296)) - [@DmitryTsepelev](https://github.com/DmitryTsepelev).
|
|
38
49
|
|
|
50
|
+
|
|
39
51
|
### 0.7.0 (2018-01-25)
|
|
40
52
|
|
|
41
53
|
#### Features
|
|
@@ -54,6 +66,7 @@
|
|
|
54
66
|
* [#291](https://github.com/ruby-grape/grape-entity/pull/291): Refactor and simplify various classes and modules - [@DmitryTsepelev](https://github.com/DmitryTsepelev).
|
|
55
67
|
* [#292](https://github.com/ruby-grape/grape-entity/pull/292): Allow replace non-conditional non-nesting exposures in child classes (fixes [#286](https://github.com/ruby-grape/grape-entity/issues/286)) - [@DmitryTsepelev](https://github.com/DmitryTsepelev).
|
|
56
68
|
|
|
69
|
+
|
|
57
70
|
### 0.6.1 (2017-01-09)
|
|
58
71
|
|
|
59
72
|
#### Features
|
|
@@ -64,6 +77,7 @@
|
|
|
64
77
|
|
|
65
78
|
* [#251](https://github.com/ruby-grape/grape-entity/pull/251): Avoid noise when code runs with Ruby warnings - [@cpetschnig](https://github.com/cpetschnig).
|
|
66
79
|
|
|
80
|
+
|
|
67
81
|
### 0.6.0 (2016-11-20)
|
|
68
82
|
|
|
69
83
|
#### Features
|
|
@@ -75,6 +89,7 @@
|
|
|
75
89
|
* [#249](https://github.com/ruby-grape/grape-entity/issues/249): Fix leaking of options and internals in default serialization - [@dblock](https://github.com/dblock), [@KingsleyKelly](https://github.com/KingsleyKelly).
|
|
76
90
|
* [#248](https://github.com/ruby-grape/grape-entity/pull/248): Fix `nil` values causing errors when `merge` option passed - [@arempe93](https://github.com/arempe93).
|
|
77
91
|
|
|
92
|
+
|
|
78
93
|
### 0.5.2 (2016-11-14)
|
|
79
94
|
|
|
80
95
|
#### Features
|
|
@@ -90,6 +105,7 @@
|
|
|
90
105
|
* [#219](https://github.com/ruby-grape/grape-entity/pull/219): Double pass options in `serializable_hash` - [@sbatykov](https://github.com/sbatykov).
|
|
91
106
|
* [#231](https://github.com/ruby-grape/grape-entity/pull/231), [#215](https://github.com/ruby-grape/grape-entity/issues/215): Allow `delegate_attribute` for derived entity - [@sbatykov](https://github.com/sbatykov).
|
|
92
107
|
|
|
108
|
+
|
|
93
109
|
### 0.5.1 (2016-4-4)
|
|
94
110
|
|
|
95
111
|
#### Features
|
|
@@ -101,6 +117,7 @@
|
|
|
101
117
|
|
|
102
118
|
* [#202](https://github.com/ruby-grape/grape-entity/pull/202): Reset `@using_class` memoization on `.setup` - [@rngtng](https://github.com/rngtng).
|
|
103
119
|
|
|
120
|
+
|
|
104
121
|
### 0.5.0 (2015-12-07)
|
|
105
122
|
|
|
106
123
|
#### Features
|
|
@@ -121,18 +138,21 @@
|
|
|
121
138
|
* [#151](https://github.com/ruby-grape/grape-entity/pull/151): Serializing of deeply nested presenter exposures: [#155](https://github.com/ruby-grape/grape-entity/issues/155) - [@marshall-lee](https://github.com/marshall-lee).
|
|
122
139
|
* [#151](https://github.com/ruby-grape/grape-entity/pull/151): Deep projections (`:only`, `:except`) were unaware of nesting: [#156](https://github.com/ruby-grape/grape-entity/issues/156) - [@marshall-lee](https://github.com/marshall-lee).
|
|
123
140
|
|
|
141
|
+
|
|
124
142
|
### 0.4.8 (2015-08-10)
|
|
125
143
|
|
|
126
144
|
#### Features
|
|
127
145
|
|
|
128
146
|
* [#167](https://github.com/ruby-grape/grape-entity/pull/167), [#166](https://github.com/ruby-grape/grape-entity/issues/166): Regression with global settings (exposures, formatters) on `Grape::Entity` - [@marshall-lee](https://github.com/marshall-lee).
|
|
129
147
|
|
|
148
|
+
|
|
130
149
|
### 0.4.7 (2015-08-03)
|
|
131
150
|
|
|
132
151
|
#### Features
|
|
133
152
|
|
|
134
153
|
* [#164](https://github.com/ruby-grape/grape-entity/pull/164): Regression: entity instance methods were exposed with `NoMethodError`: [#163](https://github.com/ruby-grape/grape-entity/issues/163) - [@marshall-lee](https://github.com/marshall-lee).
|
|
135
154
|
|
|
155
|
+
|
|
136
156
|
### 0.4.6 (2015-07-27)
|
|
137
157
|
|
|
138
158
|
#### Features
|
|
@@ -151,6 +171,7 @@
|
|
|
151
171
|
|
|
152
172
|
* [#147](https://github.com/ruby-grape/grape-entity/pull/147), [#142](https://github.com/ruby-grape/grape-entity/pull/142): Private method values were not exposed with `safe` option - [@marshall-lee](https://github.com/marshall-lee).
|
|
153
173
|
|
|
174
|
+
|
|
154
175
|
### 0.4.5 (2015-03-10)
|
|
155
176
|
|
|
156
177
|
#### Features
|
|
@@ -165,6 +186,7 @@
|
|
|
165
186
|
* [#110](https://github.com/ruby-grape/grape-entity/pull/110): Safe exposure when using `Hash` models - [@croeck](https://github.com/croeck).
|
|
166
187
|
* [#91](https://github.com/ruby-grape/grape-entity/pull/91): OpenStruct serializing - [@etehtsea](https://github.com/etehtsea).
|
|
167
188
|
|
|
189
|
+
|
|
168
190
|
### 0.4.4 (2014-08-17)
|
|
169
191
|
|
|
170
192
|
#### Features
|
|
@@ -172,6 +194,7 @@
|
|
|
172
194
|
* [#85](https://github.com/ruby-grape/grape-entity/pull/85): Added `present_collection` to indicate that an `Entity` presents an entire Collection - [@dspaeth-faber](https://github.com/dspaeth-faber).
|
|
173
195
|
* [#85](https://github.com/ruby-grape/grape-entity/pull/85): Hashes can now be passed as object to be presented and the `Hash` keys can be referenced by expose - [@dspaeth-faber](https://github.com/dspaeth-faber).
|
|
174
196
|
|
|
197
|
+
|
|
175
198
|
### 0.4.3 (2014-06-12)
|
|
176
199
|
|
|
177
200
|
#### Features
|
|
@@ -182,6 +205,7 @@
|
|
|
182
205
|
|
|
183
206
|
* [#77](https://github.com/ruby-grape/grape-entity/pull/77): Compatibility with Rspec 3 - [@justfalter](https://github.com/justfalter).
|
|
184
207
|
|
|
208
|
+
|
|
185
209
|
### 0.4.2 (2014-04-03)
|
|
186
210
|
|
|
187
211
|
#### Features
|
|
@@ -189,12 +213,14 @@
|
|
|
189
213
|
* [#60](https://github.com/ruby-grape/grape-entity/issues/59): Performance issues introduced by nested exposures - [@AlexYankee](https://github.com/AlexYankee).
|
|
190
214
|
* [#60](https://github.com/ruby-grape/grape-entity/issues/57): Nested exposure double-exposes a field - [@AlexYankee](https://github.com/AlexYankee).
|
|
191
215
|
|
|
216
|
+
|
|
192
217
|
### 0.4.1 (2014-02-13)
|
|
193
218
|
|
|
194
219
|
#### Fixes
|
|
195
220
|
|
|
196
221
|
* [#54](https://github.com/ruby-grape/grape-entity/issues/54): Fix: undefined method `to_set` - [@aj0strow](https://github.com/aj0strow).
|
|
197
222
|
|
|
223
|
+
|
|
198
224
|
### 0.4.0 (2014-01-27)
|
|
199
225
|
|
|
200
226
|
#### Features
|
|
@@ -214,6 +240,7 @@
|
|
|
214
240
|
* [#51](https://github.com/ruby-grape/grape-entity/pull/51): Raise `ArgumentError` if an unknown option is used with `expose` - [@aj0strow](https://github.com/aj0strow).
|
|
215
241
|
* [#51](https://github.com/ruby-grape/grape-entity/pull/51): Alias `:with` to `:using`, consistently with the Grape api endpoints - [@aj0strow](https://github.com/aj0strow).
|
|
216
242
|
|
|
243
|
+
|
|
217
244
|
### 0.3.0 (2013-03-29)
|
|
218
245
|
|
|
219
246
|
#### Features
|
|
@@ -222,12 +249,14 @@
|
|
|
222
249
|
* The `instance.entity` method now optionally accepts `options` - [@mbleigh](https://github.com/mbleigh).
|
|
223
250
|
* You can pass symbols to `:if` and `:unless` to simply check for truthiness/falsiness of the specified options key - [@mbleigh](https://github.com/mbleigh).
|
|
224
251
|
|
|
252
|
+
|
|
225
253
|
### 0.2.0 (2013-01-11)
|
|
226
254
|
|
|
227
255
|
#### Features
|
|
228
256
|
|
|
229
257
|
* Moved the namespace back to `Grape::Entity` to preserve compatibility with Grape - [@dblock](https://github.com/dblock).
|
|
230
258
|
|
|
259
|
+
|
|
231
260
|
### 0.1.0 (2013-01-11)
|
|
232
261
|
|
|
233
262
|
* Initial public release - [@agileanimal](https://github.com/agileanimal).
|
data/Gemfile
CHANGED
data/UPGRADING.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
|
-
Upgrading Grape Entity
|
|
2
|
-
|
|
1
|
+
# Upgrading Grape Entity
|
|
2
|
+
|
|
3
|
+
### Upgrading to >= 0.8.2
|
|
4
|
+
|
|
5
|
+
In Ruby 3.0: the block handling will be changed
|
|
6
|
+
[language-changes point 3, Proc](https://github.com/ruby/ruby/blob/v3_0_0_preview1/NEWS.md#language-changes).
|
|
7
|
+
This:
|
|
8
|
+
```ruby
|
|
9
|
+
expose :that_method_without_args, &:method_without_args
|
|
10
|
+
```
|
|
11
|
+
will be deprecated.
|
|
12
|
+
|
|
13
|
+
Prefer to use this pattern for simple setting a value
|
|
14
|
+
```ruby
|
|
15
|
+
expose :method_without_args, as: :that_method_without_args
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Upgrading to >= 0.8.2
|
|
19
|
+
|
|
20
|
+
In Ruby 3.0: the block handling will be changed
|
|
21
|
+
[language-changes point 3, Proc](https://github.com/ruby/ruby/blob/v3_0_0_preview1/NEWS.md#language-changes).
|
|
22
|
+
This:
|
|
23
|
+
```ruby
|
|
24
|
+
expose :that_method_without_args, &:method_without_args
|
|
25
|
+
```
|
|
26
|
+
will be deprecated.
|
|
27
|
+
|
|
28
|
+
Prefer to use this pattern for simple setting a value
|
|
29
|
+
```ruby
|
|
30
|
+
expose :method_without_args, as: :that_method_without_args
|
|
31
|
+
```
|
|
3
32
|
|
|
4
33
|
### Upgrading to >= 0.6.0
|
|
5
34
|
|
data/lib/grape_entity.rb
CHANGED
data/lib/grape_entity/entity.rb
CHANGED
|
@@ -139,6 +139,8 @@ module Grape
|
|
|
139
139
|
def self.inherited(subclass)
|
|
140
140
|
subclass.root_exposure = root_exposure.dup
|
|
141
141
|
subclass.formatters = formatters.dup
|
|
142
|
+
|
|
143
|
+
super
|
|
142
144
|
end
|
|
143
145
|
|
|
144
146
|
# This method is the primary means by which you will declare what attributes
|
|
@@ -523,6 +525,11 @@ module Grape
|
|
|
523
525
|
else
|
|
524
526
|
instance_exec(object, options, &block)
|
|
525
527
|
end
|
|
528
|
+
rescue StandardError => e
|
|
529
|
+
# it handles: https://github.com/ruby/ruby/blob/v3_0_0_preview1/NEWS.md#language-changes point 3, Proc
|
|
530
|
+
raise Grape::Entity::Deprecated.new e.message, 'in ruby 3.0' if e.is_a?(ArgumentError)
|
|
531
|
+
|
|
532
|
+
raise e.class, e.message
|
|
526
533
|
end
|
|
527
534
|
|
|
528
535
|
def exec_with_attribute(attribute, &block)
|
|
@@ -537,7 +544,7 @@ module Grape
|
|
|
537
544
|
if is_defined_in_entity?(attribute)
|
|
538
545
|
send(attribute)
|
|
539
546
|
elsif @delegator_accepts_opts
|
|
540
|
-
delegator.delegate(attribute, self.class.delegation_opts)
|
|
547
|
+
delegator.delegate(attribute, **self.class.delegation_opts)
|
|
541
548
|
else
|
|
542
549
|
delegator.delegate(attribute)
|
|
543
550
|
end
|
|
@@ -113,11 +113,9 @@ module Grape
|
|
|
113
113
|
@key.respond_to?(:call) ? entity.exec_with_object(@options, &@key) : @key
|
|
114
114
|
end
|
|
115
115
|
|
|
116
|
-
def with_attr_path(entity, options)
|
|
116
|
+
def with_attr_path(entity, options, &block)
|
|
117
117
|
path_part = attr_path(entity, options)
|
|
118
|
-
options.with_attr_path(path_part)
|
|
119
|
-
yield
|
|
120
|
-
end
|
|
118
|
+
options.with_attr_path(path_part, &block)
|
|
121
119
|
end
|
|
122
120
|
|
|
123
121
|
def override?
|
|
@@ -36,6 +36,7 @@ module Grape
|
|
|
36
36
|
@exposures.clear
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
+
# rubocop:disable Style/DocumentDynamicEvalDefinition
|
|
39
40
|
%i[
|
|
40
41
|
each
|
|
41
42
|
to_ary to_a
|
|
@@ -55,6 +56,7 @@ module Grape
|
|
|
55
56
|
end
|
|
56
57
|
RUBY
|
|
57
58
|
end
|
|
59
|
+
# rubocop:enable Style/DocumentDynamicEvalDefinition
|
|
58
60
|
|
|
59
61
|
# Determine if we have any nesting exposures with the same name.
|
|
60
62
|
def deep_complex_nesting?(entity)
|
|
@@ -9,6 +9,8 @@ module Grape
|
|
|
9
9
|
@entity = entity
|
|
10
10
|
@output_hash = {}
|
|
11
11
|
@output_collection = []
|
|
12
|
+
|
|
13
|
+
super
|
|
12
14
|
end
|
|
13
15
|
|
|
14
16
|
def add(exposure, result)
|
|
@@ -49,6 +51,7 @@ module Grape
|
|
|
49
51
|
output
|
|
50
52
|
end
|
|
51
53
|
|
|
54
|
+
# rubocop:disable Lint/EmptyBlock
|
|
52
55
|
# In case if we want to solve collisions providing lambda to :merge option
|
|
53
56
|
def merge_strategy(for_merge)
|
|
54
57
|
if for_merge.respond_to? :call
|
|
@@ -57,6 +60,7 @@ module Grape
|
|
|
57
60
|
-> {}
|
|
58
61
|
end
|
|
59
62
|
end
|
|
63
|
+
# rubocop:enable Lint/EmptyBlock
|
|
60
64
|
end
|
|
61
65
|
end
|
|
62
66
|
end
|
data/lib/grape_entity/version.rb
CHANGED
|
@@ -30,7 +30,9 @@ describe Grape::Entity do
|
|
|
30
30
|
|
|
31
31
|
it 'makes sure that :format_with as a proc cannot be used with a block' do
|
|
32
32
|
# rubocop:disable Style/BlockDelimiters
|
|
33
|
+
# rubocop:disable Lint/EmptyBlock
|
|
33
34
|
expect { subject.expose :name, format_with: proc {} do p 'hi' end }.to raise_error ArgumentError
|
|
35
|
+
# rubocop:enable Lint/EmptyBlock
|
|
34
36
|
# rubocop:enable Style/BlockDelimiters
|
|
35
37
|
end
|
|
36
38
|
|
|
@@ -260,27 +262,50 @@ describe Grape::Entity do
|
|
|
260
262
|
end
|
|
261
263
|
end
|
|
262
264
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
'result'
|
|
268
|
-
end
|
|
265
|
+
describe 'blocks' do
|
|
266
|
+
class SomeObject
|
|
267
|
+
def method_without_args
|
|
268
|
+
'result'
|
|
269
269
|
end
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
describe 'with block passed in' do
|
|
273
|
+
specify do
|
|
274
|
+
subject.expose :that_method_without_args do |object|
|
|
275
|
+
object.method_without_args
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
object = SomeObject.new
|
|
270
279
|
|
|
271
|
-
|
|
272
|
-
|
|
280
|
+
value = subject.represent(object).value_for(:that_method_without_args)
|
|
281
|
+
expect(value).to eq('result')
|
|
273
282
|
end
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
context 'with block passed in via &' do
|
|
286
|
+
if RUBY_VERSION.start_with?('3')
|
|
287
|
+
specify do
|
|
288
|
+
subject.expose :that_method_without_args, &:method_without_args
|
|
289
|
+
subject.expose :method_without_args, as: :that_method_without_args_again
|
|
274
290
|
|
|
275
|
-
|
|
291
|
+
object = SomeObject.new
|
|
292
|
+
expect do
|
|
293
|
+
subject.represent(object).value_for(:that_method_without_args)
|
|
294
|
+
end.to raise_error Grape::Entity::Deprecated
|
|
276
295
|
|
|
277
|
-
|
|
296
|
+
value2 = subject.represent(object).value_for(:that_method_without_args_again)
|
|
297
|
+
expect(value2).to eq('result')
|
|
298
|
+
end
|
|
299
|
+
else
|
|
300
|
+
specify do
|
|
301
|
+
subject.expose :that_method_without_args_again, &:method_without_args
|
|
278
302
|
|
|
279
|
-
|
|
280
|
-
expect(value).to eq('result')
|
|
303
|
+
object = SomeObject.new
|
|
281
304
|
|
|
282
|
-
|
|
283
|
-
|
|
305
|
+
value2 = subject.represent(object).value_for(:that_method_without_args_again)
|
|
306
|
+
expect(value2).to eq('result')
|
|
307
|
+
end
|
|
308
|
+
end
|
|
284
309
|
end
|
|
285
310
|
end
|
|
286
311
|
|
|
@@ -1693,10 +1718,12 @@ describe Grape::Entity do
|
|
|
1693
1718
|
end
|
|
1694
1719
|
end
|
|
1695
1720
|
|
|
1721
|
+
# rubocop:disable Lint/EmptyBlock
|
|
1696
1722
|
fresh_class.class_eval do
|
|
1697
1723
|
expose :first_friend, using: EntitySpec::FriendEntity do |_user, _opts|
|
|
1698
1724
|
end
|
|
1699
1725
|
end
|
|
1726
|
+
# rubocop:enable Lint/EmptyBlock
|
|
1700
1727
|
|
|
1701
1728
|
rep = subject.value_for(:first_friend)
|
|
1702
1729
|
expect(rep).to be_kind_of EntitySpec::FriendEntity
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: grape-entity
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.8.
|
|
4
|
+
version: 0.8.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michael Bleigh
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-11-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -190,6 +190,7 @@ files:
|
|
|
190
190
|
- lib/grape_entity/delegator/hash_object.rb
|
|
191
191
|
- lib/grape_entity/delegator/openstruct_object.rb
|
|
192
192
|
- lib/grape_entity/delegator/plain_object.rb
|
|
193
|
+
- lib/grape_entity/deprecated.rb
|
|
193
194
|
- lib/grape_entity/entity.rb
|
|
194
195
|
- lib/grape_entity/exposure.rb
|
|
195
196
|
- lib/grape_entity/exposure/base.rb
|
|
@@ -229,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
229
230
|
- !ruby/object:Gem::Version
|
|
230
231
|
version: '0'
|
|
231
232
|
requirements: []
|
|
232
|
-
rubygems_version: 3.1
|
|
233
|
+
rubygems_version: 3.2.0.rc.1
|
|
233
234
|
signing_key:
|
|
234
235
|
specification_version: 4
|
|
235
236
|
summary: A simple facade for managing the relationship between your model and API.
|