Sidekiq を使用してプッシュ イベントをクライアントに送信しようとしています。これが私のコードです:
時計.rb
every(3.minutes, 'update_events') { PushEventWorker.perform_async('events_updated') }
push_event_worker.rb
class PushEventWorker
include Sidekiq::Worker
sidekiq_options :retry => false, :timeout => 2.minutes
def perform(job_name)
job_name = job_name.to_sym
if :events_updated
Pusher['events'].trigger('events_updated', {})
end
end
application.html.erb
<script src="http://js.pusher.com/2.1/pusher.min.js" type="text/javascript"></script>
<script type="text/javascript">
Pusher.log = function(message) {
if (window.console && window.console.log) {
window.console.log(message);
}
};
var pusher = new Pusher('<%= ENV['pusher_key'] %>');
var eventsChannel = pusher.subscribe('events');
eventsChannel.bind('events_updated', function() {
App.Pollers.Event.poll();
});
</script>
ログに次の出力が表示されます。
Pusher : Event recd : {"event":"pusher:pong","data":{}}
しかし、私が呼び出すPushEventWorker.new.perform('events_updated')
と成功です。なぜこれは機能するのに、上記は機能しないのですか?