Sha256: 891a9e271a081ddfe5b7f56c25f25882955f070e65f456bbc826a6dd54d094e3

Contents?: true

Size: 735 Bytes

Versions: 1

Compression:

Stored size: 735 Bytes

Contents

module Backburner
  # BasicObject for 1.8.7
  class BasicObject
    instance_methods.each do |m|
      undef_method(m) if m.to_s !~ /(?:^__|^nil?$|^send$|^object_id$)/
    end
  end unless defined?(::BasicObject)

  # Class allows async task to be proxied
  class AsyncProxy < BasicObject
    # AsyncProxy(User, 10, :pri => 1000, :ttr => 1000)
    # Options include `pri` (priority), `delay` (delay in secs), `ttr` (time to respond)
    def initialize(klazz, id=nil, opts={})
      @klazz, @id, @opts = klazz, id, opts
    end

    # Enqueue as job when a method is invoked
    def method_missing(method, *args, &block)
      ::Backburner::Worker.enqueue(@klazz, [@id, method, *args], @opts)
    end
  end # AsyncProxy
end # Backburner

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
backburner-0.0.1 lib/backburner/async_proxy.rb