class BackgroundWorker::Config

Attributes

backgrounded[R]
enqueue_with[R]
logger[R]

Public Class Methods

new(attrs) click to toggle source

Configuration includes following options:

logger: what logger to user throughout
enqueue_with: callback to execute the process
after_exception: callback to handle exceptions (for example, error reporting service)

eg: Config.new(

logger: Rails.logger,
enqueue_with: -> klass, method_name, opts { Resque.enqueue(klass, method_name, opts) },
after_exception: -> e { Airbrake.notify(e) }

)

# File lib/background_worker/config.rb, line 18
def initialize(attrs)
  @logger = attrs.fetch(:logger, ::Logger.new(STDOUT))
  @enqueue_with = attrs.fetch(:enqueue_with, method(:foreground_enqueue))
  @after_exception = attrs.fetch(:after_exception, method(:default_after_exception))
  @backgrounded = attrs.fetch(:backgrounded, true)
end

Public Instance Methods

after_exception(e) click to toggle source

Callback fired when an exception occurs

# File lib/background_worker/config.rb, line 26
def after_exception(e)
  @after_exception.call(e)
end
default_after_exception(e) click to toggle source
# File lib/background_worker/config.rb, line 34
def default_after_exception(e)
  logger.error '** No after_exception handler installed **'
  logger.error "Exception: #{e}"
  logger.error "#{e.backtrace.join("\n")}"
end
foreground_enqueue(klass, opts) click to toggle source
# File lib/background_worker/config.rb, line 30
def foreground_enqueue(klass, opts)
  klass.perform_now(opts)
end