class Bluecollar::Client
Attributes
configuration[R]
instance[R]
logger[R]
redis_db[RW]
redis_hostname[RW]
redis_key_prefix[RW]
redis_port[RW]
redis_timeout[RW]
Public Class Methods
configure(options = {})
click to toggle source
# File lib/bluecollar-client/client.rb, line 10 def configure(options = {}) @instance = nil @logger = options[:logger] || Logger.new("/dev/null") @configuration = {} @configuration[:redis_key_prefix] = options[:redis_key_prefix] || "bluecollar" @configuration[:redis_hostname] = options[:redis_hostname] || "127.0.0.1" @configuration[:redis_port] = (options[:redis_port] || 6379).to_i @configuration[:redis_db] = options[:redis_db].to_i @configuration[:redis_timeout] = (options[:redis_timeout] || 5000).to_i end
new(options)
click to toggle source
# File lib/bluecollar-client/client.rb, line 37 def initialize(options) options.each { |k,v| send("#{k}=".to_sym, v) } end
Public Instance Methods
async_job_for(worker_name, args)
click to toggle source
# File lib/bluecollar-client/client.rb, line 28 def async_job_for(worker_name, args) redis_connection.lpush processing_queue, redis_payload(worker_name, args) rescue Redis::BaseError => e Bluecollar::Client.logger.warn("Error while adding #{worker_name}: #{args.inspect} to queue.\n#{e}:#{e.message}\nBacktrace:\n\t#{e.backtrace.join("\n\t")}") raise Bluecollar::ClientError.new("Error while adding #{worker_name}: #{args.inspect} to queue.\n#{e}:#{e.message}\nBacktrace:\n\t#{e.backtrace.join("\n\t")}") end
Private Instance Methods
processing_queue()
click to toggle source
# File lib/bluecollar-client/client.rb, line 52 def processing_queue @processing_queue ||= "#{redis_key_prefix}:queues:master" end
redis_connection()
click to toggle source
# File lib/bluecollar-client/client.rb, line 56 def redis_connection @redis_connection ||= Redis.new(host: redis_hostname, port: redis_port, db: redis_db, timeout: redis_timeout) end
redis_payload(worker_name, args)
click to toggle source
# File lib/bluecollar-client/client.rb, line 41 def redis_payload(worker_name, args) raise ArgumentError.new("args must be an Array.") unless args.is_a? Array begin payload = { "worker" => worker_name, "args" => args, "uuid" => SecureRandom.uuid, "scheduled-runtime" => nil } JSON.dump(payload) rescue raise Bluecollar::ClientError.new("Error while creating JSON payload for #{worker_name}: #{args.inpsect}.\n#{e}:#{e.message}\nBacktrace:\n\t#{e.backtrace.join("\n\t")}") end end