sidekiq_remove_scheduled 0.0.1 → 0.0.2

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: 7d902d2dd737af66bc5d66e1fc06411bf2981021
4
- data.tar.gz: 18a5e8a33ce9ed7328e20b4242a585cc8b8ca984
3
+ metadata.gz: 031d06e38a793a86fbc0b4a761d886b3f5a60fa4
4
+ data.tar.gz: 31b4bef861a03adf69277d85b4cfb8ccd248dffd
5
5
  SHA512:
6
- metadata.gz: 9e67b2dae033285fcaf5e73cf7e68ca9f7661a78593674d70e455444c7a1ec262beb95c30c3580e7171a304eacebb46290a75dffa678dad7a383842bb64d9215
7
- data.tar.gz: ab15dda909d15bfdb9d6700491ba4a76b95faf876846a1c6fe4bd75564cf7e8810629b72afd20c86ac8d11bf296ae7626bcb6cd6b380cbea8afd10949f811f7b
6
+ metadata.gz: 90a2024dde2eacca190749ec00c613404b33d14b6c44693c6a4dc456be8129e94e3a9d32ab6dfbb2fa539bff5873ebc3ab40886b4c39c0845440da40aa5fa8fd
7
+ data.tar.gz: ae24b76b63013f26d8a06fffa4fc132b31f361f2ca5eaa336bc1688ce386b8e86f6269ef4f3e677e9c898990a1c54c6a1ad707448d82b3e6700486650ebff1d0
@@ -1,17 +1,18 @@
1
1
  require 'sidekiq'
2
2
  require 'celluloid'
3
3
  require 'sidekiq/processor'
4
- require 'sidekiq_remove_scheduled/job_hook'
5
- require 'sidekiq_remove_scheduled/process_hook'
4
+ require 'sidekiq_remove_scheduled/logger'
5
+ require 'sidekiq_remove_scheduled/hooks/job_hook'
6
+ require 'sidekiq_remove_scheduled/hooks/process_hook'
6
7
 
7
8
  module Sidekiq
8
9
  module Worker
9
- include SidekiqRemoveScheduled::JobHook
10
+ include SidekiqRemoveScheduled::Hooks::JobHook
10
11
  end
11
12
  end
12
13
 
13
14
  module Sidekiq
14
15
  class Processor
15
- include SidekiqRemoveScheduled::ProcessHook
16
+ include SidekiqRemoveScheduled::Hooks::ProcessHook
16
17
  end
17
18
  end
@@ -0,0 +1,44 @@
1
+ module SidekiqRemoveScheduled
2
+ module Hooks
3
+ module JobHook
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ end
7
+ module ClassMethods
8
+ def self.extended(base)
9
+ perform_in_hook base
10
+ remove_scheduled_jobs base
11
+ end
12
+ def self.perform_in_hook(base)
13
+ default_perform_in = base::ClassMethods.instance_method(:perform_in)
14
+ base::ClassMethods.send :define_method, :perform_in do |interval, *args|
15
+ jid = default_perform_in.bind(self).call(interval, *args)
16
+ field = "#{self.to_s}-#{args.to_s}"
17
+ ::SidekiqRemoveScheduled::Logger.log("Storing job id: #{jid} for field: #{field}")
18
+ jobs = ::SidekiqRemoveScheduled::Redis.job_queue.get(field).to_s.split(',')
19
+ jobs << jid
20
+ ::SidekiqRemoveScheduled::Redis.job_queue.set(field, jobs.uniq.join(','))
21
+ end
22
+ base::ClassMethods.send :alias_method, :perform_at, :perform_in
23
+ end
24
+ def self.remove_scheduled_jobs(base)
25
+ base::ClassMethods.send :define_method, :remove_scheduled do |*args|
26
+ field = "#{self.to_s}-#{args.to_s}"
27
+ ::SidekiqRemoveScheduled::Logger.log("Removing scheduled jobs for field: #{field}")
28
+ jobs = ::SidekiqRemoveScheduled::Redis.job_queue.get(field).to_s.split(',')
29
+ jobs.each do |job_id|
30
+ pattern = '*,\"jid\":\"'+job_id+'\",*'
31
+ itterator = 0
32
+ begin
33
+ job = ::SidekiqRemoveScheduled::Redis.client.zscan('schedule', itterator, match: pattern)
34
+ itterator = job.first.to_i
35
+ end until job.last.present? || itterator == 0
36
+ ::SidekiqRemoveScheduled::Redis.client.zrem('schedule', job.last.first) if job.last.present?
37
+ end
38
+ ::SidekiqRemoveScheduled::Redis.job_queue.del(field)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,24 @@
1
+ module SidekiqRemoveScheduled
2
+ module Hooks
3
+ module ProcessHook
4
+ def self.included(base)
5
+ execute_job_hook base
6
+ end
7
+ def self.execute_job_hook(base)
8
+ default_execute_job = base.instance_method(:execute_job)
9
+ base.send :define_method, :execute_job do |worker, args|
10
+ default_execute_job.bind(self).call(worker, args)
11
+ field = "#{worker.class.to_s}-#{args.to_s}"
12
+ ::SidekiqRemoveScheduled::Logger.log("Processing and removing job id: #{worker.jid} for field: #{field}")
13
+ jobs = ::SidekiqRemoveScheduled::Redis.job_queue.get(field).to_s.split(',')
14
+ jobs.delete(worker.jid)
15
+ if jobs.blank?
16
+ ::SidekiqRemoveScheduled::Redis.job_queue.del(field)
17
+ else
18
+ ::SidekiqRemoveScheduled::Redis.job_queue.set(field, jobs.join(','))
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,15 @@
1
+ module SidekiqRemoveScheduled
2
+ module Logger
3
+ class << self
4
+ attr_accessor :logger
5
+ end
6
+ def self.set(object)
7
+ self.logger = object
8
+ self
9
+ end
10
+ def self.log(msg)
11
+ return if logger.nil?
12
+ logger.info(msg)
13
+ end
14
+ end
15
+ end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module SidekiqRemoveScheduled
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq_remove_scheduled
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rohit Jangid
@@ -63,8 +63,9 @@ files:
63
63
  - Rakefile
64
64
  - lib/sidekiq_remove_scheduled.rb
65
65
  - lib/sidekiq_remove_scheduled/binder.rb
66
- - lib/sidekiq_remove_scheduled/job_hook.rb
67
- - lib/sidekiq_remove_scheduled/process_hook.rb
66
+ - lib/sidekiq_remove_scheduled/hooks/job_hook.rb
67
+ - lib/sidekiq_remove_scheduled/hooks/process_hook.rb
68
+ - lib/sidekiq_remove_scheduled/logger.rb
68
69
  - lib/sidekiq_remove_scheduled/redis.rb
69
70
  - lib/version.rb
70
71
  homepage: https://github.com/rohitjangid/sidekiq_remove_scheduled
@@ -1,40 +0,0 @@
1
- module SidekiqRemoveScheduled
2
- module JobHook
3
- def self.included(base)
4
- base.extend ClassMethods
5
- end
6
- module ClassMethods
7
- def self.extended(base)
8
- perform_in_hook base
9
- remove_scheduled_jobs base
10
- end
11
- def self.perform_in_hook(base)
12
- default_perform_in = base::ClassMethods.instance_method(:perform_in)
13
- base::ClassMethods.send :define_method, :perform_in do |interval, *args|
14
- jid = default_perform_in.bind(self).call(interval, *args)
15
- field = "#{self.to_s}-#{args.to_s}"
16
- jobs = SidekiqRemoveScheduled::Redis.job_queue.get(field).to_s.split(',')
17
- jobs << jid
18
- SidekiqRemoveScheduled::Redis.job_queue.set(field, jobs.uniq.join(','))
19
- end
20
- base::ClassMethods.send :alias_method, :perform_at, :perform_in
21
- end
22
- def self.remove_scheduled_jobs(base)
23
- base::ClassMethods.send :define_method, :remove_scheduled do |*args|
24
- field = "#{self.to_s}-#{args.to_s}"
25
- jobs = SidekiqRemoveScheduled::Redis.job_queue.get(field).to_s.split(',')
26
- jobs.each do |job_id|
27
- pattern = '*,\"jid\":\"'+job_id+'\",*'
28
- itterator = 0
29
- begin
30
- job = SidekiqRemoveScheduled::Redis.client.zscan('schedule', itterator, match: pattern)
31
- itterator = job.first.to_i
32
- end until job.last.present? || itterator == 0
33
- SidekiqRemoveScheduled::Redis.client.zrem('schedule', job.last.first) if job.last.present?
34
- end
35
- SidekiqRemoveScheduled::Redis.job_queue.del(field)
36
- end
37
- end
38
- end
39
- end
40
- end
@@ -1,21 +0,0 @@
1
- module SidekiqRemoveScheduled
2
- module ProcessHook
3
- def self.included(base)
4
- execute_job_hook base
5
- end
6
- def self.execute_job_hook(base)
7
- default_execute_job = base.instance_method(:execute_job)
8
- base.send :define_method, :execute_job do |worker, args|
9
- default_execute_job.bind(self).call(worker, args)
10
- field = "#{worker.class.to_s}-#{args.to_s}"
11
- jobs = SidekiqRemoveScheduled::Redis.job_queue.get(field).to_s.split(',')
12
- jobs.delete(worker.jid)
13
- if jobs.blank?
14
- SidekiqRemoveScheduled::Redis.job_queue.del(field)
15
- else
16
- SidekiqRemoveScheduled::Redis.job_queue.set(field, jobs.join(','))
17
- end
18
- end
19
- end
20
- end
21
- end