Sha256: 641b50894d46229ba170f7d7dfd28165a6dce1161a930358d5a5fa4c76a47e9c

Contents?: true

Size: 812 Bytes

Versions: 2

Compression:

Stored size: 812 Bytes

Contents

require "sidekiq"
require "sidekiq/delay/version"
require 'active_support/concern'

module Sidekiq
  module Delay
    extend ActiveSupport::Concern

    included do
      @worker = DefaultWorker
    end

    def delay(options={})
      Sidekiq::Extensions::Proxy.new \
        self.class.worker,
        [ self.class, self.id ],
        options
    end

    module ClassMethods
      def worker(worker=nil)
        worker ? @worker = worker : @worker
      end
    end

    module DefaultStrategy
      def perform(yml)
        ((klass, id), method_name, args) = YAML.load(yml)
        record(klass, id).send(method_name, *args)
      end

      def record(klass, id)
        klass.find(id)
      end
    end

    class DefaultWorker
      include Sidekiq::Worker
      include DefaultStrategy
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sidekiq-delay-1.0.0 lib/sidekiq/delay.rb
sidekiq-delay-0.0.3 lib/sidekiq/delay.rb