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 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: