activejob-cancel 0.1.0 → 0.2.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/.travis.yml +10 -3
- data/CHANGELOG.md +8 -0
- data/README.md +1 -1
- data/Rakefile +2 -0
- data/activejob-cancel.gemspec +2 -0
- data/gemfiles/active_job_42.gemfile +2 -0
- data/gemfiles/active_job_50.gemfile +5 -3
- data/gemfiles/active_job_51.gemfile +13 -0
- data/gemfiles/active_job_master.gemfile +14 -0
- data/lib/active_job/cancel.rb +4 -2
- data/lib/active_job/cancel/queue_adapters.rb +1 -0
- data/lib/active_job/cancel/queue_adapters/delayed_job_adapter.rb +1 -0
- data/lib/active_job/cancel/queue_adapters/resque_adapter.rb +40 -0
- data/lib/active_job/cancel/queue_adapters/sidekiq_adapter.rb +5 -3
- data/lib/active_job/cancel/version.rb +1 -1
- metadata +35 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5132b8b0de9b2367ec64975fd45bb3f28a6e0e9d
|
4
|
+
data.tar.gz: 9ed3b9b10a9bd8717421eb2054b95a93aa203e9f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2da9918d434cc04329d3dfb0089373eac2762737f39b7b5a488dec2db45432b7412bcdf5188b7ec83d63e9b9c26cd3a02a60236719208f9c778be7d4b53825bf
|
7
|
+
data.tar.gz: 732622b3d8e2777ddb3f4c3126f678230579759ebe8ed35fe6d5d5331d26b9a2d962fd59cd66683e078a8e87aee18711ee2fb34f8c7fed012911a0abd0cd8605
|
data/.travis.yml
CHANGED
@@ -1,13 +1,20 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.2.
|
4
|
-
- 2.3.
|
3
|
+
- 2.2.7
|
4
|
+
- 2.3.4
|
5
|
+
- 2.4.1
|
5
6
|
|
6
7
|
gemfile:
|
7
8
|
- gemfiles/active_job_42.gemfile
|
8
9
|
- gemfiles/active_job_50.gemfile
|
10
|
+
- gemfiles/active_job_51.gemfile
|
11
|
+
- gemfiles/active_job_master.gemfile
|
9
12
|
|
10
|
-
before_install: gem install bundler
|
13
|
+
before_install: gem install bundler
|
14
|
+
|
15
|
+
matrix:
|
16
|
+
allow_failures:
|
17
|
+
- gemfile: gemfiles/active_job_master.gemfile
|
11
18
|
|
12
19
|
services:
|
13
20
|
- redis
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# ActiveJob::Cancel
|
2
2
|
|
3
|
-
`activejob-cancel` provides cancel method to Active Job. Currently it supports only `Sidekiq` and `
|
3
|
+
`activejob-cancel` provides cancel method to Active Job. Currently it supports only `Sidekiq`, `Delayed Job` and `resque`.
|
4
4
|
|
5
5
|
[](https://travis-ci.org/y-yagi/activejob-cancel)
|
6
6
|
[](http://badge.fury.io/rb/activejob-cancel)
|
data/Rakefile
CHANGED
data/activejob-cancel.gemspec
CHANGED
@@ -26,6 +26,8 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_development_dependency "activerecord", '>= 4.2.0'
|
27
27
|
spec.add_development_dependency "delayed_job"
|
28
28
|
spec.add_development_dependency "delayed_job_active_record"
|
29
|
+
spec.add_development_dependency "resque"
|
30
|
+
spec.add_development_dependency "resque-scheduler"
|
29
31
|
spec.add_development_dependency "sqlite3"
|
30
32
|
spec.add_development_dependency "byebug"
|
31
33
|
end
|
@@ -5,7 +5,9 @@ gem 'rake'
|
|
5
5
|
gem 'sidekiq'
|
6
6
|
gem 'delayed_job'
|
7
7
|
gem 'delayed_job_active_record'
|
8
|
+
gem 'resque'
|
9
|
+
gem 'resque-scheduler'
|
8
10
|
gem 'sqlite3'
|
9
|
-
gem 'activesupport', '
|
10
|
-
gem 'activejob', '
|
11
|
-
gem 'activerecord', '
|
11
|
+
gem 'activesupport', '5.0.1'
|
12
|
+
gem 'activejob', '5.0.1'
|
13
|
+
gem 'activerecord', '5.0.1'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'coveralls', require: false
|
4
|
+
gem 'rake'
|
5
|
+
gem 'sidekiq'
|
6
|
+
gem 'delayed_job'
|
7
|
+
gem 'delayed_job_active_record', '>= 4.1.2'
|
8
|
+
gem 'resque'
|
9
|
+
gem 'resque-scheduler'
|
10
|
+
gem 'sqlite3'
|
11
|
+
gem 'activesupport', '5.1.0'
|
12
|
+
gem 'activejob', '5.1.0'
|
13
|
+
gem 'activerecord', '5.1.0'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'coveralls', require: false
|
4
|
+
gem 'rake'
|
5
|
+
gem 'sidekiq'
|
6
|
+
gem 'delayed_job'
|
7
|
+
gem 'delayed_job_active_record'
|
8
|
+
gem 'resque'
|
9
|
+
gem 'resque-scheduler'
|
10
|
+
gem 'sqlite3'
|
11
|
+
gem 'arel', github: 'rails/arel'
|
12
|
+
gem 'activesupport', github: 'rails/rails'
|
13
|
+
gem 'activejob', github: 'rails/rails'
|
14
|
+
gem 'activerecord', github: 'rails/rails'
|
data/lib/active_job/cancel.rb
CHANGED
@@ -7,7 +7,7 @@ module ActiveJob
|
|
7
7
|
module Cancel
|
8
8
|
extend ActiveSupport::Concern
|
9
9
|
|
10
|
-
SUPPORTED_ADAPTERS = %w(Sidekiq DelayedJob).freeze
|
10
|
+
SUPPORTED_ADAPTERS = %w(Sidekiq DelayedJob Resque).freeze
|
11
11
|
|
12
12
|
def cancel
|
13
13
|
if self.class.can_cancel?
|
@@ -54,4 +54,6 @@ module ActiveJob
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
-
|
57
|
+
ActiveSupport.on_load(:active_job) do
|
58
|
+
include(ActiveJob::Cancel)
|
59
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'resque'
|
2
|
+
|
3
|
+
module ActiveJob
|
4
|
+
module Cancel
|
5
|
+
module QueueAdapters
|
6
|
+
class ResqueAdapter
|
7
|
+
def cancel(job_id, queue_name)
|
8
|
+
queue_name = queue_name.call if queue_name.is_a?(Proc)
|
9
|
+
job = find_job(job_id, queue_name)
|
10
|
+
|
11
|
+
if job
|
12
|
+
Resque.redis.lrem(redis_key_for_queue(queue_name), 0, Resque.encode(job))
|
13
|
+
return true
|
14
|
+
else
|
15
|
+
if defined?(Resque.remove_delayed_selection)
|
16
|
+
removed_count = Resque.remove_delayed_selection { |target| target[0]["job_id"] == job_id }
|
17
|
+
return true if removed_count > 0
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
false
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def find_job(job_id, queue_name)
|
26
|
+
jobs = Resque.list_range(redis_key_for_queue(queue_name), 0, Resque.size(queue_name))
|
27
|
+
jobs = [jobs] if jobs.is_a?(Hash)
|
28
|
+
|
29
|
+
jobs.find do |job|
|
30
|
+
job["args"][0]["job_id"] == job_id
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def redis_key_for_queue(queue)
|
35
|
+
"queue:#{queue}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -5,6 +5,7 @@ module ActiveJob
|
|
5
5
|
module QueueAdapters
|
6
6
|
class SidekiqAdapter
|
7
7
|
def cancel(job_id, queue_name)
|
8
|
+
queue_name = queue_name.call if queue_name.is_a?(Proc)
|
8
9
|
job = find_job_by_job_id(job_id, queue_name)
|
9
10
|
|
10
11
|
if job
|
@@ -18,6 +19,7 @@ module ActiveJob
|
|
18
19
|
def cancel_by(opts, queue_name)
|
19
20
|
raise ArgumentError, 'Please specify ":provider_job_id"' unless opts[:provider_job_id]
|
20
21
|
|
22
|
+
queue_name = queue_name.call if queue_name.is_a?(Proc)
|
21
23
|
job = find_job_by_provider_job_id(opts[:provider_job_id], queue_name)
|
22
24
|
if job
|
23
25
|
job.delete
|
@@ -40,17 +42,17 @@ module ActiveJob
|
|
40
42
|
|
41
43
|
def find_job_from_queue(job_id, queue_name)
|
42
44
|
queue = Sidekiq::Queue.new(queue_name)
|
43
|
-
queue.detect { |j| j.args.first['job_id'] == job_id }
|
45
|
+
queue.detect { |j| j.args.first.is_a?(Hash) && j.args.first['job_id'] == job_id }
|
44
46
|
end
|
45
47
|
|
46
48
|
def find_job_from_scheduled_set(job_id)
|
47
49
|
scheduled_set = Sidekiq::ScheduledSet.new
|
48
|
-
scheduled_set.detect { |j| j.args.first['job_id'] == job_id }
|
50
|
+
scheduled_set.detect { |j| j.args.first.is_a?(Hash) && j.args.first['job_id'] == job_id }
|
49
51
|
end
|
50
52
|
|
51
53
|
def find_job_from_retry_set(job_id)
|
52
54
|
scheduled_set = Sidekiq::RetrySet.new
|
53
|
-
scheduled_set.detect { |j| j.args.first['job_id'] == job_id }
|
55
|
+
scheduled_set.detect { |j| j.args.first.is_a?(Hash) && j.args.first['job_id'] == job_id }
|
54
56
|
end
|
55
57
|
end
|
56
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activejob-cancel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuji Yaginuma
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activejob
|
@@ -136,6 +136,34 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: resque
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: resque-scheduler
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
139
167
|
- !ruby/object:Gem::Dependency
|
140
168
|
name: sqlite3
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -173,6 +201,7 @@ extra_rdoc_files: []
|
|
173
201
|
files:
|
174
202
|
- ".gitignore"
|
175
203
|
- ".travis.yml"
|
204
|
+
- CHANGELOG.md
|
176
205
|
- CODE_OF_CONDUCT.md
|
177
206
|
- Gemfile
|
178
207
|
- LICENSE.txt
|
@@ -183,9 +212,12 @@ files:
|
|
183
212
|
- bin/setup
|
184
213
|
- gemfiles/active_job_42.gemfile
|
185
214
|
- gemfiles/active_job_50.gemfile
|
215
|
+
- gemfiles/active_job_51.gemfile
|
216
|
+
- gemfiles/active_job_master.gemfile
|
186
217
|
- lib/active_job/cancel.rb
|
187
218
|
- lib/active_job/cancel/queue_adapters.rb
|
188
219
|
- lib/active_job/cancel/queue_adapters/delayed_job_adapter.rb
|
220
|
+
- lib/active_job/cancel/queue_adapters/resque_adapter.rb
|
189
221
|
- lib/active_job/cancel/queue_adapters/sidekiq_adapter.rb
|
190
222
|
- lib/active_job/cancel/version.rb
|
191
223
|
- lib/activejob/cancel.rb
|
@@ -209,9 +241,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
241
|
version: '0'
|
210
242
|
requirements: []
|
211
243
|
rubyforge_project:
|
212
|
-
rubygems_version: 2.
|
244
|
+
rubygems_version: 2.6.13
|
213
245
|
signing_key:
|
214
246
|
specification_version: 4
|
215
247
|
summary: activejob-cancel provides cancel method to Active Job
|
216
248
|
test_files: []
|
217
|
-
has_rdoc:
|