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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6d2d963a3239101fbb564b9864936a7f06413aead04540979b8d3737c7fc1429
4
- data.tar.gz: e8b7e4d4d75f263633883d6b24b1af0adfe549b0d8778d2fb57aeb937a482c03
3
+ metadata.gz: 1c3ab22befabdf3cf98cc50124b312de7dd50326f1dea99b49031eba00b37862
4
+ data.tar.gz: 179254cc9a30f277ee5a0d562db27812345e64ef2b212a68594a0bf308d1986a
5
5
  SHA512:
6
- metadata.gz: d3140b3feff8927f989a1ac2ad9c118254793e23119aabe56c405e6a35d0bd944ea176f3398e07fd5e1f0f3f43a7eac053bcf4565dfcc23341c1c26a67e58044
7
- data.tar.gz: 4b71e936e4801192f62e1990761dcd544425d5fdffb7020bcabe9f0d91778c50b599d14f341ce04b8491797dff774b02ee26db8ff6dbc8ed1f1a2f0b42d2aa56
6
+ metadata.gz: 30e2524355311167b9f0ae415558bb7e6b0242f542f92eee81f994e7eb635738ae06ac50189c64963939f1c23e9d0e0741d933a24b413089387020bc0ae6587c
7
+ data.tar.gz: 72234ba20316ee9e010c82efd04cb5e5594da33cc2ae89623f198f324664888aa145b89b8f873dacf57f035bd8c66ccec6d53beabafa98165c046cddd0f47684
@@ -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:
@@ -24,5 +24,6 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.metadata["changelog_uri"] = "https://github.com/Shopify/job-iteration/blob/master/CHANGELOG.md"
26
26
 
27
+ spec.add_development_dependency("activerecord")
27
28
  spec.add_dependency("activejob", ">= 5.2")
28
29
  end
@@ -176,7 +176,13 @@ module JobIteration
176
176
  )
177
177
  end
178
178
 
179
- unless respond_to?(:build_enumerator, true)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JobIteration
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.0"
5
5
  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.0.0
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-04-29 00:00:00.000000000 Z
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