lib/beanstalker/extend.rb in beanstalker-0.4.11 vs lib/beanstalker/extend.rb in beanstalker-0.4.12
- old
+ new
@@ -28,23 +28,22 @@
Symbol,
]
module Beanstalker::Extensions
def self.included(receiver)
- @@methods_async_options = {}
receiver.extend(ClassMethods)
end
-
+
module ClassMethods
def async_method(method, options = {})
- methods_async_options = class_variable_get(:@@methods_async_options)
+ @methods_async_options ||= {}
if options
- class_variable_set(:@@methods_async_options, methods_async_options.merge(method.to_sym => options))
+ @methods_async_options.merge!(method.to_sym => options)
end
end
end
-
+
def interpolate_async_options(options, object, *args)
result = {}
options.each do |k,v|
result[k] = if v.is_a?(Proc)
v.call(object, *args)
@@ -52,12 +51,13 @@
v
end
end
result
end
-
+
def async_send(selector, *args)
- async_send_opts(selector, @@methods_async_options[selector.to_sym] || {}, *args)
+ @methods_async_options ||= {}
+ async_send_opts(selector, @methods_async_options[selector.to_sym] || {}, *args)
end
def async_send_opts(selector, opts, *args)
interpolated_options = interpolate_async_options(opts, self, *args)
Beanstalker::Queue.put_call!(self, selector, interpolated_options, args)