Sha256: 292b0d1cd2ecf38297da713b7f052ef0f405848c43d603068d41c45680494592

Contents?: true

Size: 1.33 KB

Versions: 4

Compression:

Stored size: 1.33 KB

Contents

require 'sidekiq/api'

module Rworkflow
  module SidekiqHelper
    def self.included(klass)
      klass.send :extend, ClassMethods
    end

    module ClassMethods
      # Mix-in methods
      def enqueue_job(*params)
        if should_perform_job_async?
          self.perform_async(*params)
        else
          inline_perform(params)
        end
      end

      def should_perform_job_async?
        return Rworkflow.config.sidekiq_perform_async
      end

      def inline_perform(params)
        worker = self.new
        args = JSON.parse(params.to_json)
        jid = Digest::MD5.hexdigest((Time.now.to_f * 1000).to_i.to_s)
        worker.jid = jid
        worker.perform(*args)
      end
    end

    # Static methods
    class << self
      def configure_server(host, port, db)
        Sidekiq.configure_server do |config|
          config.redis = { url: "redis://#{host}:#{port}/#{db}", namespace: 'sidekiq' }
          config.server_middleware do |chain|
            chain.add SidekiqServerMiddleware
          end
        end
      end

      def configure_client(host, port, db)
        Sidekiq.configure_client do |config|
          config.redis = { url: "redis://#{host}:#{port}/#{db}", namespace: 'sidekiq' }
        end
      end

      def queue_sizes
        stats = Sidekiq::Stats.new
        return stats.queues
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rworkflow-0.7.3 lib/rworkflow/sidekiq_helper.rb
rworkflow-0.7.2 lib/rworkflow/sidekiq_helper.rb
rworkflow-0.7.1 lib/rworkflow/sidekiq_helper.rb
rworkflow-0.7.0 lib/rworkflow/sidekiq_helper.rb