Class: Readymade::BackgroundJob
- Inherits:
-
ActiveJob::Base
- Object
- ActiveJob::Base
- Readymade::BackgroundJob
- Defined in:
- lib/readymade/background_job.rb
Direct Known Subclasses
Class Method Summary collapse
- .apply_uniqueness! ⇒ Object
- .handle_duplication(job) ⇒ Object
- .uniqueness_not_loaded_warning ⇒ Object
Instance Method Summary collapse
Class Method Details
.apply_uniqueness! ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/readymade/background_job.rb', line 10 def apply_uniqueness! return unless Readymade.config&.lock_jobs? begin require "active_job/uniqueness" unique Readymade.config.lock_type, lock_ttl: Readymade.config.lock_ttl, on_conflict: ->(job) { handle_duplication(job) } rescue LoadError warn uniqueness_not_loaded_warning end end |
.handle_duplication(job) ⇒ Object
24 25 26 27 28 |
# File 'lib/readymade/background_job.rb', line 24 def handle_duplication(job) return if Readymade.config.locked_queues.include?(job.queue_name.to_sym) ActiveJob::Uniqueness.unlock!(job_class_name: job.class.name) end |
.uniqueness_not_loaded_warning ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/readymade/background_job.rb', line 30 def uniqueness_not_loaded_warning "\n ======== READYMADE WARNING ========\n\n The `activejob-uniqueness` gem is not installed, but `lock_jobs` is enabled.\n Please add the following to your Gemfile:\n\n gem \"activejob-uniqueness\", \"~> 0.4.0\"\n\n ===================================\n\n MSG\nend\n" |
Instance Method Details
#perform(**args) ⇒ Object
47 48 49 |
# File 'lib/readymade/background_job.rb', line 47 def perform(**args) args.delete(:class_name).to_s.constantize.send(callable_method, **args) end |