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)