lib/reactor/models/concerns/subscribable.rb in reactor-0.5.3 vs lib/reactor/models/concerns/subscribable.rb in reactor-0.6.0

- old
+ new

@@ -1,11 +1,13 @@ module Reactor::Subscribable extend ActiveSupport::Concern module ClassMethods - def on_event(event, method = nil, options = {}, &block) - (Reactor::SUBSCRIBERS[event.to_s] ||= []).push(StaticSubscriberFactory.create event, method, {source: self}.merge(options), &block) + def on_event(*args, &block) + options = args.extract_options! + event, method = args + (Reactor::SUBSCRIBERS[event.to_s] ||= []).push(StaticSubscriberFactory.create(event, method, {source: self}.merge(options), &block)) end end class StaticSubscriberFactory @@ -15,26 +17,35 @@ eval %Q{ class #{new_class} include Sidekiq::Worker - cattr_accessor :method, :delay, :source + cattr_accessor :method, :delay, :source, :in_memory def perform(data) event = Reactor::Event.new(data) if @@method.is_a?(Symbol) @@source.delay_for(@@delay).send(@@method, event) else @@method.call(event) end end + + def self.perform_where_needed(data) + if @@in_memory + new.perform(data) + else + perform_async(data) + end + end end } new_class = new_class.constantize new_class.method = method || block new_class.delay = options[:delay] || 0 new_class.source = options[:source] + new_class.in_memory = options[:in_memory] new_class end end end \ No newline at end of file