Module: MultiBackgroundJob

Defined in:
lib/multi_background_job.rb,
lib/multi_background_job/lock.rb,
lib/multi_background_job/config.rb,
lib/multi_background_job/errors.rb,
lib/multi_background_job/worker.rb,
lib/multi_background_job/version.rb,
lib/multi_background_job/unique_job.rb,
lib/multi_background_job/lock_digest.rb,
lib/multi_background_job/workers/faktory.rb,
lib/multi_background_job/workers/sidekiq.rb,
lib/multi_background_job/adapters/adapter.rb,
lib/multi_background_job/adapters/faktory.rb,
lib/multi_background_job/adapters/sidekiq.rb,
lib/multi_background_job/middleware_chain.rb,
lib/multi_background_job/middleware/unique_job.rb,
lib/multi_background_job/workers/shared_class_methods.rb,
lib/multi_background_job/middleware/unique_job/faktory.rb,
lib/multi_background_job/middleware/unique_job/sidekiq.rb

Overview

Provides the Sidekiq middleware that make the unique job control work

Defined Under Namespace

Modules: Adapters, Middleware, Workers Classes: Config, Error, InvalidConfig, Lock, LockDigest, MiddlewareChain, NotDefinedWorker, UniqueJob, Worker

Constant Summary collapse

SERVICES =
{
  sidekiq: Adapters::Sidekiq,
  faktory: Adapters::Faktory,
}
VERSION =
'0.1.0'

Class Method Summary collapse

Class Method Details

.[](worker_class, **options) ⇒ MultiBackgroundJob::Worker

Returns An instance of worker.

Parameters:

  • worker_class (String)

    The worker class name

  • options (Hash)

    Options that will be passed along to the worker instance

Returns:



50
51
52
# File 'lib/multi_background_job.rb', line 50

def self.[](worker_class, **options)
  Worker.new(worker_class, **config.worker_options(worker_class).merge(options))
end

.configObject



72
73
74
# File 'lib/multi_background_job.rb', line 72

def self.config
  @config ||= Config.new
end

.configure(&block) ⇒ Object



76
77
78
79
80
81
82
# File 'lib/multi_background_job.rb', line 76

def self.configure(&block)
  return unless block_given?

  config.instance_eval(&block)
  @redis_pool = nil
  config
end

.for(service, **options) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/multi_background_job.rb', line 58

def self.for(service, **options)
  require_relative "multi_background_job/workers/#{service}"
  service = service.to_sym
  worker_options = options.merge(service: service)
  module_name = service.to_s.split(/_/i).collect!{ |w| w.capitalize }.join
  mod = Workers.const_get(module_name)
  mod.module_eval do
    define_method(:bg_worker_options) do
      worker_options
    end
  end
  mod
end

.jidObject



54
55
56
# File 'lib/multi_background_job.rb', line 54

def self.jid
  SecureRandom.hex(12)
end

.redis_poolObject



84
85
86
87
88
# File 'lib/multi_background_job.rb', line 84

def self.redis_pool
  @redis_pool ||= ConnectionPool.new(config.redis_pool) do
    Redis.new(config.redis_config)
  end
end