Sha256: 859d16660da7e931bf97e7e8d6c69ef5a936f4f97d040225b405c278b9890b8a

Contents?: true

Size: 978 Bytes

Versions: 6

Compression:

Stored size: 978 Bytes

Contents

module Lux::DelayedJob
  extend self

  attr_reader :server

  @server = :memory

  def server= name
    adapter = "Lux::DelayedJob::#{name.to_s.capitalize}"
    @server = adapter.constantize
  rescue NameError
    die 'No adapter %s not found' % adapter
  end

  def push object, method_to_call=nil
    die "No DelayedJob server defined" unless @server
    @server.push [object, method_to_call]
  end

  def pop
    obj, method_to_call = @server.pop

    return unless obj

    puts "JOB POP> #{obj.to_s}.#{method_to_call}".yellow

    if method_to_call
      begin
        obj.send(method_to_call)
      rescue
        puts("Lux::DelayedJob.pop FAIL for :#{method_to_call} (#{$!.message})".red)
      end
    else
      eval(obj)
    end

    true
  end

  def run! seconds=1
    puts "JOB QUE> is running for #{@server}".green

    Thread.new do
      while true
        print '.'
        true while Lux::DelayedJob.pop
        sleep seconds
      end
    end.join
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
lux-fw-0.5.37 ./lib/lux/delayed_job/delayed_job.rb
lux-fw-0.5.36 ./lib/lux/delayed_job/delayed_job.rb
lux-fw-0.5.35 ./lib/lux/delayed_job/delayed_job.rb
lux-fw-0.5.34 ./lib/lux/delayed_job/delayed_job.rb
lux-fw-0.5.33 ./lib/lux/delayed_job/delayed_job.rb
lux-fw-0.5.32 ./lib/lux/delayed_job/delayed_job.rb