sidejob 4.1.0 → 4.1.1

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
  SHA1:
3
- metadata.gz: e731ae1460c300e29d0698535fd1b7108efd3568
4
- data.tar.gz: be777ac02165ead0b44de9100cefb8dfbb3c16ac
3
+ metadata.gz: 033d179109658ea54b4b0bba545bc35a42fa48a1
4
+ data.tar.gz: f8a6688ab4fafadac1a053c5a3d1fa895b09e432
5
5
  SHA512:
6
- metadata.gz: 82265dc59bf18956bff558a9e9c996d74ae4a7a2f70f396d6a6188a73c884743756c57fac40bbba958de9bc9fe95e5aca435a3ae4489d23b56700c8f3b330448
7
- data.tar.gz: baac41c609404f39cc9083f13dd489856faaa34f76db2fc5774e1190cf0c9ddbbdab036d893a77a22749a92f5670a62cc04e033e9367eb3ab3f6b1ecf3368cac
6
+ metadata.gz: 2403991e7c3808512dfb86eeeaa0376e6709cdd8f30c6e739633b4e0486e72788b2aaf95fb8be7c29553c5be88269821ca4c495059ffc311d47aed1315f9ef9f
7
+ data.tar.gz: 85f8dc532fcde954b4504b756cf0f26827d714e4c62e59bad1b3ec75f859f79893dc2b468a9dfcc4f04e11622b53e75dfc26df1f9337cfe49dd45050a78425af
data/lib/sidejob.rb CHANGED
@@ -38,6 +38,7 @@ module SideJob
38
38
  # @param queue [String] Name of the queue to put the job in
39
39
  # @param klass [String] Name of the class that will handle the job
40
40
  # @param args [Array] additional args to pass to the worker's perform method (default none)
41
+ # @param as [String] Add as alias to job or if name already taken, does not queue new job and returns nil
41
42
  # @param parent [SideJob::Job] parent job
42
43
  # @param name [String] Name of child job (required if parent specified)
43
44
  # @param at [Time, Float] Time to schedule the job, otherwise queue immediately
@@ -45,9 +46,11 @@ module SideJob
45
46
  # @param inports [Hash{Symbol,String => Hash}] Input port configuration. Port name to options.
46
47
  # @param outports [Hash{Symbol,String => Hash}] Output port configuration. Port name to options.
47
48
  # @return [SideJob::Job] Job
48
- def self.queue(queue, klass, args: nil, parent: nil, name: nil, at: nil, by: nil, inports: nil, outports: nil)
49
+ def self.queue(queue, klass, args: nil, as: nil, parent: nil, name: nil, at: nil, by: nil, inports: nil, outports: nil)
49
50
  raise "No worker registered for #{klass} in queue #{queue}" unless SideJob::Worker.config(queue, klass)
50
51
 
52
+ return nil if as && SideJob.redis.hget('jobs:aliases', as)
53
+
51
54
  # To prevent race conditions, we generate the id and set all data in redis before queuing the job to sidekiq
52
55
  # Otherwise, sidekiq may start the job too quickly
53
56
  id = SideJob.redis.incr('jobs:last_id')
@@ -71,6 +74,8 @@ module SideJob
71
74
  job.inports = inports
72
75
  job.outports = outports
73
76
 
77
+ job.add_alias(as) if as
78
+
74
79
  job.run(at: at)
75
80
  end
76
81
 
@@ -1,4 +1,4 @@
1
1
  module SideJob
2
2
  # The current SideJob version
3
- VERSION = '4.1.0'
3
+ VERSION = '4.1.1'
4
4
  end
data/spec/sidejob_spec.rb CHANGED
@@ -65,6 +65,20 @@ describe SideJob do
65
65
  SideJob::Worker.drain_queue
66
66
  end
67
67
 
68
+ it 'can specify a job alias' do
69
+ expect(SideJob.find('mytest')).to be nil
70
+ job = SideJob.queue('testq', 'TestWorker', as: 'mytest')
71
+ expect(SideJob.find('mytest')).to eq job
72
+ end
73
+
74
+ it 'does not queue a job if alias already used' do
75
+ job = SideJob.queue('testq', 'TestWorker', as: 'mytest')
76
+ expect(SideJob.find('mytest')).to eq job
77
+ expect {
78
+ expect(SideJob.queue('testq', 'TestWorker', as: 'mytest')).to be nil
79
+ }.to change {Sidekiq::Stats.new.enqueued}.by(0)
80
+ end
81
+
68
82
  it 'can specify job parent' do
69
83
  expect {
70
84
  parent = SideJob.queue('testq', 'TestWorker')
data/web/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- sidejob (4.1.0)
4
+ sidejob (4.1.1)
5
5
  sidekiq
6
6
 
7
7
  GEM
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidejob
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Austin Che
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-07 00:00:00.000000000 Z
11
+ date: 2015-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq