class Rapid::Task

Public Class Methods

new(klass, content, attr) click to toggle source
# File lib/rapid/task.rb, line 7
def initialize klass, content, attr
  @klass = klass
  @content = content
  @message_ttl = attr[:message_ttl]
  @routing_key = attr[:routing_key] 
  @max_attempts = attr[:max_attempts] || 1
  @attempt_counter = 0
end

Public Instance Methods

args=(args) click to toggle source
# File lib/rapid/task.rb, line 16
def args= args
  @args = args
end
enqueue() click to toggle source
# File lib/rapid/task.rb, line 45
def enqueue
  q = Rapid::get_channel.queue(underscore('rapid_'+@klass.to_s), durable: true)
  q.publish(to_json, persisted: true)# TODO: message_ttl, routing_key
end
metaclass() click to toggle source
# File lib/rapid/task.rb, line 3
def metaclass
  class << self; self; end
end
method_name=(method_name) click to toggle source
# File lib/rapid/task.rb, line 20
def method_name= method_name
  @method_name = method_name
end
to_json() click to toggle source
# File lib/rapid/task.rb, line 24
def to_json
  {
    klass: @klass,
    content: @content,
    message_ttl: @message_ttl,
    routing_key: @routing_key,
    max_attempts: @max_attempts,
    attempt_counter: @attempt_counter,
    method_name: @method_name,
    args: @args,
  }.to_json
end
underscore(camel_cased_word) click to toggle source
# File lib/rapid/task.rb, line 37
def underscore(camel_cased_word)
  camel_cased_word.to_s.gsub(/::/, '/').
  gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
  gsub(/([a-z\d])([A-Z])/,'\1_\2').
  tr('-', '_').
  downcase
end