Module: SkRequeue::Core::ClassMethods
- Defined in:
- lib/sk_requeue/core.rb
Instance Method Summary collapse
- #build_job_key(job) ⇒ Object
- #enqueables_map(action, enqueables_arr) ⇒ Object
- #failure_and_duplicacy_recovery(action, enqueables_arr) {|detached_records| ... } ⇒ Object
Instance Method Details
#build_job_key(job) ⇒ Object
40 41 42 |
# File 'lib/sk_requeue/core.rb', line 40 def build_job_key(job) [job.args[0], job.args[1], job.args[2]].join(':') end |
#enqueables_map(action, enqueables_arr) ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/sk_requeue/core.rb', line 31 def enqueables_map(action, enqueables_arr) temp_map = {} enqueables_arr.each do |e| key = e.build_model_key(action) temp_map[key] = e end temp_map end |
#failure_and_duplicacy_recovery(action, enqueables_arr) {|detached_records| ... } ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/sk_requeue/core.rb', line 12 def failure_and_duplicacy_recovery(action, enqueables_arr) ss = Sidekiq::ScheduledSet.new all_queued_keys = [] enqueables_hash = enqueables_map(action, enqueables_arr) ss.each do |job| next if job.klass != worker_name sk_key = build_job_key(job) if all_queued_keys.include?(sk_key) || !(enqueables_hash.has_key?(sk_key)) job.delete else all_queued_keys << sk_key end end detached_keys = (enqueables_hash.keys - all_queued_keys) detached_records = enqueables_hash.slice(*detached_keys).values yield(detached_records) if block_given? detached_records end |