Module: CarrierWave::Backgrounder

Defined in:
lib/backgrounder/delay.rb,
lib/backgrounder/version.rb,
lib/backgrounder/orm/base.rb,
lib/carrierwave_backgrounder.rb,
lib/carrierwave_backgrounder.rb,
lib/backgrounder/orm/activemodel.rb,
lib/backgrounder/orm/data_mapper.rb

Defined Under Namespace

Modules: Delay, DelayStorage, ORM Classes: Railtie

Constant Summary collapse

VERSION =
"0.0.9"
Logger =
Logger.new(STDOUT)

Class Method Summary collapse

Class Method Details

.available_backendsObject



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/carrierwave_backgrounder.rb', line 34

def available_backends
  @available_backends ||= begin
    backends = []
    backends << :girl_friday if defined? ::GirlFriday
    backends << :delayed_job if defined? ::Delayed::Job
    backends << :resque      if defined? ::Resque
    backends << :qu          if defined? ::Qu
    backends << :sidekiq     if defined? ::Sidekiq
    backends << :qc          if defined? ::QC
    backends
  end
end

.backendObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/carrierwave_backgrounder.rb', line 19

def backend
  return @backend unless @backend.nil?
  if available_backends.empty?
    warn 'WARNING: No queue backends found to use for CarrierWave::Backgrounder'
  elsif available_backends.size == 1
    self.backend = available_backends.first
  elsif available_backends.size > 1
    warn 'WARNING: Multiple queue backends found for CarrierWave::Backgrounder. You need to set one explicitly.'
  end
end

.backend=(value) ⇒ Object



14
15
16
17
# File 'lib/carrierwave_backgrounder.rb', line 14

def backend=(value)
  @backend = value
  self.configure_backend
end

.configure {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



30
31
32
# File 'lib/carrierwave_backgrounder.rb', line 30

def configure
  yield self
end

.configure_backendObject



47
48
49
50
51
52
53
54
55
# File 'lib/carrierwave_backgrounder.rb', line 47

def configure_backend
  if backend == :girl_friday
    require 'girl_friday'
    @girl_friday_queue = GirlFriday::WorkQueue.new(:carrierwave) do |msg|
      worker = msg[:worker]
      worker.perform
    end
  end
end

.enqueue_for_backend(worker, class_name, subject_id, mounted_as) ⇒ Object



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

def enqueue_for_backend(worker, class_name, subject_id, mounted_as)
  case backend
  when :girl_friday
    @girl_friday_queue << { :worker => worker.new(self.class.name, subject_id, mounted_as) }
  when :delayed_job
    ::Delayed::Job.enqueue worker.new(class_name, subject_id, mounted_as)
  when :resque
    ::Resque.enqueue worker, class_name, subject_id, mounted_as
  when :qu
    ::Qu.enqueue worker, class_name, subject_id, column.mounted_as
  when :sidekiq
    ::Sidekiq::Client.enqueue worker, class_name, subject_id, mounted_as
  when :qc
    ::QC.enqueue "#{worker.name}.perform", class_name, subject_id, mounted_as.to_s
  end
end