reactor 0.9.2 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/reactor/event.rb +18 -3
- data/lib/reactor/version.rb +1 -1
- data/reactor.gemspec +2 -2
- data/spec/event_spec.rb +22 -2
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 703450e6a7d56fa44bbfcfa8a9eed1263df5cc0b
|
4
|
+
data.tar.gz: f2e523fbc25b98abeb47b5f67d16b4cbf6b388e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9d620ea6f462727a488d71c236420a18f36bca937916d58836604de3098d4a2e638527aa9c9e502ee0040cd55d79b179ccc1291b0f969c149d0369a7f38391f
|
7
|
+
data.tar.gz: 442cf06b6d18b3ef38347836d072b1cf3bfe1907f1d28e44048f1e451b74aec0006224741c27a5b1f07d977a0ae3ed25beb5670037d76f890c9e0d4ddef623cd
|
data/lib/reactor/event.rb
CHANGED
@@ -66,9 +66,24 @@ class Reactor::Event
|
|
66
66
|
def reschedule(name, data = {})
|
67
67
|
scheduled_jobs = Sidekiq::ScheduledSet.new
|
68
68
|
job = scheduled_jobs.detect do |job|
|
69
|
-
job['class'] == self.name.to_s
|
70
|
-
job['args'].first == name.to_s
|
71
|
-
job.score.to_i == data[:was].to_i
|
69
|
+
same_class = job['class'] == self.name.to_s
|
70
|
+
same_name = job['args'].first == name.to_s
|
71
|
+
same_at = job.score.to_i == data[:was].to_i
|
72
|
+
|
73
|
+
if data[:actor]
|
74
|
+
job_data = job['args'].second
|
75
|
+
|
76
|
+
if job_data
|
77
|
+
same_actor = job_data['actor_type'] == data[:actor].class.name &&
|
78
|
+
job_data['actor_id'] == data[:actor].id
|
79
|
+
else
|
80
|
+
same_actor = false
|
81
|
+
end
|
82
|
+
|
83
|
+
same_class && same_name && same_at && same_actor
|
84
|
+
else
|
85
|
+
same_class && same_name && same_at
|
86
|
+
end
|
72
87
|
end
|
73
88
|
|
74
89
|
job.delete if job
|
data/lib/reactor/version.rb
CHANGED
data/reactor.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "sidekiq", "
|
22
|
-
spec.add_dependency 'activerecord', '
|
21
|
+
spec.add_dependency "sidekiq", "< 4.0"
|
22
|
+
spec.add_dependency 'activerecord', '< 4.2'
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.3"
|
25
25
|
spec.add_development_dependency "rake"
|
data/spec/event_spec.rb
CHANGED
@@ -84,16 +84,36 @@ describe Reactor::Event do
|
|
84
84
|
|
85
85
|
it 'will schedule an event in the future even if that event was not previously scheduled in the past' do
|
86
86
|
expect {
|
87
|
-
jid = Reactor::Event.reschedule :
|
87
|
+
jid = Reactor::Event.reschedule :no_old_turtle_time, at: (time + 2.hours), was: time
|
88
88
|
expect(scheduled.find_job(jid).score).to eq((time + 2.hours).to_f)
|
89
89
|
}.to change{ scheduled.size }.by(1)
|
90
90
|
end
|
91
91
|
|
92
92
|
it 'will not schedule an event when the time passed in is nil' do
|
93
93
|
expect {
|
94
|
-
Reactor::Event.reschedule :
|
94
|
+
Reactor::Event.reschedule :no_old_turtle_time, at: nil, was: time
|
95
95
|
}.to_not change{ scheduled.size }
|
96
96
|
end
|
97
|
+
|
98
|
+
context 'when an actor is passed' do
|
99
|
+
let(:actor) { ArbitraryModel.create! }
|
100
|
+
|
101
|
+
it 'will not delete a job which is not associated with the actor' do
|
102
|
+
Reactor::Event.publish :turtle_time, at: time
|
103
|
+
|
104
|
+
expect {
|
105
|
+
Reactor::Event.reschedule :turtle_time, at: time + 2.hours, was: time, actor: actor
|
106
|
+
}.to change { scheduled.size}.from(1).to(2)
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'will delete a job associated with the actor' do
|
110
|
+
Reactor::Event.publish :turtle_time, at: time, actor: actor
|
111
|
+
|
112
|
+
expect {
|
113
|
+
Reactor::Event.reschedule :turtle_time, at: time + 2.hours, was: time, actor: actor
|
114
|
+
}.not_to change { scheduled.size}.from(1)
|
115
|
+
end
|
116
|
+
end
|
97
117
|
end
|
98
118
|
|
99
119
|
describe 'event content' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reactor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- winfred
|
@@ -11,36 +11,36 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2015-01-06 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: sidekiq
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
|
-
- - "
|
20
|
+
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '4.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - "
|
27
|
+
- - "<"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '4.0'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: activerecord
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
|
-
- - "
|
34
|
+
- - "<"
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: '
|
36
|
+
version: '4.2'
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- - "
|
41
|
+
- - "<"
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: '
|
43
|
+
version: '4.2'
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: bundler
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
@@ -216,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
216
216
|
version: '0'
|
217
217
|
requirements: []
|
218
218
|
rubyforge_project:
|
219
|
-
rubygems_version: 2.
|
219
|
+
rubygems_version: 2.2.2
|
220
220
|
signing_key:
|
221
221
|
specification_version: 4
|
222
222
|
summary: Sidekiq/ActiveRecord pubsub lib
|