diff --git a/lib/wisper/sidekiq.rb b/lib/wisper/sidekiq.rb index 1af3599..d32d4e0 100644 --- a/lib/wisper/sidekiq.rb +++ b/lib/wisper/sidekiq.rb @@ -6,7 +6,12 @@ module Wisper class SidekiqBroadcaster def broadcast(subscriber, publisher, event, args) - subscriber.delay.public_send(event, *args) + if subscriber.method_defined?(:perform) + subscriber.perform_async(event, args) + else + method = subscriber.respond_to?(:sidekiq_delay) ? :sidekiq_delay : :delay + subscriber.send(method).public_send(event, *args) + end end def self.register diff --git a/spec/dummy_app/subscriber.rb b/spec/dummy_app/subscriber.rb index 807c2e7..f7e8c26 100644 --- a/spec/dummy_app/subscriber.rb +++ b/spec/dummy_app/subscriber.rb @@ -1,7 +1,12 @@ class Subscriber + include Sidekiq::Worker def self.it_happened(message) File.open('/tmp/shared', 'w') do |file| file.puts "pid: #{Process.pid}" end end + + def perform(event_name, *args) + self.class.send(event_name, args) + end end