class Rabbitmq::Async::Service
Attributes
arg_list[R]
klass[R]
method[R]
object[R]
object_method[R]
Public Class Methods
new(params)
click to toggle source
# File lib/rabbitmq/async/service.rb, line 6 def initialize(params) @object = params["object"] || (raise "Object Name Missing") @method = params["method"] || (raise "Method Name Missing") @arg_list = params["arg_list"] || (raise "Argument List Misisng") @object_method = params["object_method"] || false @klass = params["class"] || nil @arg_list = parse_arg(@arg_list) end
Public Instance Methods
perform()
click to toggle source
# File lib/rabbitmq/async/service.rb, line 15 def perform object_method ? perform_object_method : perform_class_method end
perform_class_method()
click to toggle source
# File lib/rabbitmq/async/service.rb, line 19 def perform_class_method object.constantize.send(method.to_sym, *arg_list) end
perform_object_method()
click to toggle source
# File lib/rabbitmq/async/service.rb, line 23 def perform_object_method obj = klass.constantize.send(:find, object["id"]) obj.send(method.to_sym, *arg_list) end
Private Instance Methods
parse_arg(arg_list)
click to toggle source
# File lib/rabbitmq/async/service.rb, line 30 def parse_arg(arg_list) models = ActiveRecord::Base.subclasses.collect { |type| type.name }.sort new_arg_list = [] arg_list.each do |arg| if arg.class == ActiveSupport::HashWithIndifferentAccess klass_key = arg.keys.first if models.include? klass_key #TODO add validation for Hash of object if arg[klass_key].class == Array new_arg_list << arg[klass_key].map{ |x| klass_key.constantize.find(x["id"])} else new_arg_list << klass_key.constantize.find(arg[klass_key]["id"]) end else new_arg_list << arg end else new_arg_list << arg end end new_arg_list end