class Antelopes::Pusher

Class used to push jobs in the todo queue This should not be used directly by Antelopes users.

@since 0.0.1 @private

Attributes

logger[R]
redis[R]

Public Class Methods

new(logger: nil, redis: nil) click to toggle source

Initialization

@param logger [ServerEngine::DaemonLogger] a logger @param redis [Redis] a {github.com/redis/redis-rb redis} connection

# File lib/antelopes/pusher.rb, line 14
def initialize(logger: nil, redis: nil)
  @logger = logger || ServerEngine::DaemonLogger.new($stdout)
  @redis = redis || Antelopes::Redis.new.connection
end

Public Instance Methods

call(job_params) click to toggle source

Mechod that actually adds the job to queue

@example Enqueing a job

result = Antelopes::Pusher.new.call(
  job: Hash[class: 'MyClass', method: 'call', args: Hash[foo: 'bar']]
)
result.jid

@param job_params [Hash] parameters of the job @return [OpenStruct] response object

# File lib/antelopes/pusher.rb, line 29
def call(job_params)
  @result = OpenStruct.new(jid: SecureRandom.uuid)

  redis.set("antelopes:job:#{@result.jid}", JSON.generate(job_params.merge(jid: @result.jid)))
  redis.lpush('antelopes:todo', @result.jid)

  logger.info "Pushed #{@result.jid} - #{job_params}"

  @result
end