job-iteration 1.0.0 → 1.1.0

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