Xenapto/resque-rate_limited

View on GitHub
lib/resque/plugins/rate_limited/rate_limited_un_pause.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Resque
  module Plugins
    module RateLimited
      class UnPause
        @queue = nil

        class << self
          attr_writer(:queue)

          def use?
            Resque.respond_to?(:enqueue_at_with_queue) && @queue
          end

          def enqueue(timestamp, klass)
            # If Resque scheduler is installed and queue is set - use it to queue a wake up job
            return unless use?
            Resque.enqueue_at_with_queue(
              @queue,
              timestamp,
              Resque::Plugins::RateLimited::UnPause,
              klass
            )
          end

          def perform(klass)
            class_from_string(klass.to_s).un_pause
          end

          def class_from_string(str)
            return Object.const_get(str) unless str.include?('::')
            str.split('::').reduce(Object) do |mod, class_name|
              mod.const_get(class_name)
            end
          end
        end
      end
    end
  end
end