job-iteration 1.0.0 → 1.1.0
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/CHANGELOG.md +6 -0
- data/job-iteration.gemspec +1 -0
- data/lib/job-iteration/iteration.rb +19 -1
- data/lib/job-iteration/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c3ab22befabdf3cf98cc50124b312de7dd50326f1dea99b49031eba00b37862
|
4
|
+
data.tar.gz: 179254cc9a30f277ee5a0d562db27812345e64ef2b212a68594a0bf308d1986a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30e2524355311167b9f0ae415558bb7e6b0242f542f92eee81f994e7eb635738ae06ac50189c64963939f1c23e9d0e0741d933a24b413089387020bc0ae6587c
|
7
|
+
data.tar.gz: 72234ba20316ee9e010c82efd04cb5e5594da33cc2ae89623f198f324664888aa145b89b8f873dacf57f035bd8c66ccec6d53beabafa98165c046cddd0f47684
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,12 @@
|
|
4
4
|
|
5
5
|
#### Bug fix
|
6
6
|
|
7
|
+
### v1.1.0 (July 17, 2019)
|
8
|
+
|
9
|
+
#### New feature
|
10
|
+
|
11
|
+
- [35](https://github.com/Shopify/job-iteration/pull/35) - Raise exception if malformed arguments are use in #build_enumerator
|
12
|
+
|
7
13
|
### v1.0.0 (April 29, 2019)
|
8
14
|
|
9
15
|
It’s been in production at Shopify since 2017. It has support for Rails 5 and 6 :tada:
|
data/job-iteration.gemspec
CHANGED
@@ -176,7 +176,13 @@ module JobIteration
|
|
176
176
|
)
|
177
177
|
end
|
178
178
|
|
179
|
-
|
179
|
+
if respond_to?(:build_enumerator, true)
|
180
|
+
parameters = method(:build_enumerator).parameters
|
181
|
+
unless valid_cursor_parameter?(parameters)
|
182
|
+
raise ArgumentError, "Iteration job (#{self.class}) #build_enumerator " \
|
183
|
+
"expects the keyword argument `cursor`"
|
184
|
+
end
|
185
|
+
else
|
180
186
|
raise ArgumentError, "Iteration job (#{self.class}) must implement #build_enumerator " \
|
181
187
|
"to provide a collection to iterate"
|
182
188
|
end
|
@@ -214,5 +220,17 @@ module JobIteration
|
|
214
220
|
when false, :skip_complete_callbacks then false
|
215
221
|
end
|
216
222
|
end
|
223
|
+
|
224
|
+
def valid_cursor_parameter?(parameters)
|
225
|
+
# this condition is when people use the splat operator.
|
226
|
+
# def build_enumerator(*)
|
227
|
+
return true if parameters == [[:rest]]
|
228
|
+
|
229
|
+
parameters.each do |parameter_type, parameter_name|
|
230
|
+
next unless parameter_name == :cursor
|
231
|
+
return true if parameter_type == :keyreq
|
232
|
+
end
|
233
|
+
false
|
234
|
+
end
|
217
235
|
end
|
218
236
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: job-iteration
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shopify
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activerecord
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: activejob
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|