sellect/delayed_cron

View on GitHub
lib/delayed_cron/jobs/sucker_punch.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'sucker_punch'

module DelayedCron
  module Jobs
    class SuckerPunch
      include ::SuckerPunch::Job

      def self.enqueue_delayed_cron(klass, method_name, options)
        unless scheduled?(klass)
          options.symbolize_keys!
          self.new.later(options[:interval], klass, method_name, options)
        end
      end

      def self.scheduled?(klass)
        ::SuckerPunch::Queue.new(klass).registered?
      end

      def perform(klass, method_name, options)
        DelayedCron.process_job(klass, method_name, options)
      end

      def later(sec, *args)
        after(sec) { perform(*args) }
      end

    end
  end
end