Sha256: a0a6d17361dcf9421730ebd56f7505b3909aad41ef1b384275f75b381b9018a1

Contents?: true

Size: 533 Bytes

Versions: 16

Compression:

Stored size: 533 Bytes

Contents

description 'Background worker'
require 'thread'

module Worker
  @queue = Queue.new

  def self.start
    Thread.new do
      loop do
        begin
          user, task = @queue.pop
          User.current = user
          task.call
        rescue => ex
          Olelo.logger.error(ex)
        ensure
          User.current = nil
        end
      end
    end
  end

  def self.jobs
    @queue.length
  end

  def self.defer(&block)
    @queue << [User.current, block]
  end
end

setup do
  Worker.start
end

Olelo::Worker = Worker

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
olelo-0.9.15 plugins/utils/worker.rb
olelo-0.9.14 plugins/utils/worker.rb
olelo-0.9.13 plugins/utils/worker.rb
olelo-0.9.12 plugins/utils/worker.rb
olelo-0.9.11 plugins/utils/worker.rb
olelo-0.9.10 plugins/utils/worker.rb
olelo-0.9.9 plugins/utils/worker.rb
olelo-0.9.8 plugins/utils/worker.rb
olelo-0.9.7 plugins/utils/worker.rb
olelo-0.9.6 plugins/utils/worker.rb
olelo-0.9.5 plugins/utils/worker.rb
olelo-0.9.4 plugins/utils/worker.rb
olelo-0.9.3 plugins/utils/worker.rb
olelo-0.9.2 plugins/utils/worker.rb
olelo-0.9.1 plugins/utils/worker.rb
olelo-0.9.0 plugins/utils/worker.rb