activejob-cancel 0.1.0 → 0.2.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
  SHA1:
3
- metadata.gz: 99ba1ad25092d81d1e814585fd026fd68f813c2a
4
- data.tar.gz: 272ae21271e5ddc2b5081b2de32756885dfb5352
3
+ metadata.gz: 5132b8b0de9b2367ec64975fd45bb3f28a6e0e9d
4
+ data.tar.gz: 9ed3b9b10a9bd8717421eb2054b95a93aa203e9f
5
5
  SHA512:
6
- metadata.gz: 9c5f55cf87d82c363d00148021bcf08f481723f58da89c91d4f445d8289ce87eba3a0c39167c6dd355ff0830357aef3480f392f738d1cabbbb76bced0f3097d9
7
- data.tar.gz: ca5b5d7aae41db84ff5d4ea694f01bebfbd155ded00073c2dac1dc591a4f436b7584b53022cc4042f35c391610c8e0ffe2282dd64475d63dad051c133a0d7c19
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.5
4
- - 2.3.1
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 -v 1.11.2
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
@@ -0,0 +1,8 @@
1
+ ## master
2
+
3
+ Nothing
4
+
5
+ ## 0.2.0
6
+
7
+ * Add support for `resque`
8
+ * Fix(SidekiqAdapter): fix case when worker's first argument is not a Hash #21 [Nguyễn Đức Long]
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 `Delayed Job`.
3
+ `activejob-cancel` provides cancel method to Active Job. Currently it supports only `Sidekiq`, `Delayed Job` and `resque`.
4
4
 
5
5
  [![Build Status](https://travis-ci.org/y-yagi/activejob-cancel.svg?branch=master)](https://travis-ci.org/y-yagi/activejob-cancel)
6
6
  [![Gem Version](https://badge.fury.io/rb/activejob-cancel.svg)](http://badge.fury.io/rb/activejob-cancel)
data/Rakefile CHANGED
@@ -5,6 +5,8 @@ Rake::TestTask.new(:test) do |t|
5
5
  t.libs << "test"
6
6
  t.libs << "lib"
7
7
  t.test_files = FileList['test/**/*_test.rb']
8
+ t.verbose = true
9
+ t.warning = true
8
10
  end
9
11
 
10
12
  task :default => :test
@@ -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,6 +5,8 @@ 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
11
  gem 'activesupport', '~> 4.2.0'
10
12
  gem 'activejob', '~> 4.2.0'
@@ -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', '~> 5.0.0'
10
- gem 'activejob', '~> 5.0.0'
11
- gem 'activerecord', '~> 5.0.0'
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'
@@ -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
- ActiveJob::Base.include(ActiveJob::Cancel)
57
+ ActiveSupport.on_load(:active_job) do
58
+ include(ActiveJob::Cancel)
59
+ end
@@ -5,6 +5,7 @@ module ActiveJob
5
5
 
6
6
  autoload :SidekiqAdapter
7
7
  autoload :DelayedJobAdapter
8
+ autoload :ResqueAdapter
8
9
  end
9
10
  end
10
11
  end
@@ -6,6 +6,7 @@ module ActiveJob
6
6
  module QueueAdapters
7
7
  class DelayedJobAdapter
8
8
  def cancel(job_id, queue_name)
9
+ queue_name = queue_name.call if queue_name.is_a?(Proc)
9
10
  job = find_job(job_id, queue_name)
10
11
  if job
11
12
  job.destroy
@@ -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
@@ -1,5 +1,5 @@
1
1
  module ActiveJob
2
2
  module Cancel
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  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.1.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: 2016-07-25 00:00:00.000000000 Z
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.5.1
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: