我正在使用Ruby on Rails并尝试使用延迟作业添加用于调度通知推送的功能。我根据文档实现了gem,并通过运行rake jobs:work
启动了工作者,但尽管我付出了最大的努力,但没有任何工作被保存。我在控制台中尝试了Delayed::Job.all
,但无论我做什么,它都会返回一个空数组。
我的模特:
class MessageSocialAccount < ActiveRecord::Base
attr_accessible :social_account_id, :message_id, :read_time, :push_notification
attr_reader :when_to_run
belongs_to :message
belongs_to :social_account
def when_to_run
message.deliver_at || Time.now
end
def push
social_account.send_push(msg_sca.message)
update_attributes!(:push_notification => true)
end
handle_asynchronously :push, :run_at => Proc.new {|i| i.when_to_run }
end
我在日志中看不到delayed_job.log,而且development.log中没有任何线索。
您是否有任何想法可能是什么问题?感谢
*编辑 我称之为的模型: message.rb
class Message < ActiveRecord::Base
def send_push_to_all(delivery_time=nil)
self.message_social_accounts.map{|msg_sca| msg_sca.push} unless self.reward.status=="qa"
self.update_attributes!(:sent_at => Time.now)
end
end
呼叫来自控制器:
msg.send_push_to_all(msg.deliver_at)
答案 0 :(得分:0)
我意识到我正在处理的应用程序已经将Sidekiq用于其他目的,看起来就像那些受干扰的那样。当Sidekiq界面打开时,我可以看到那里的工作,尽管他们没有在延迟的工作查询中显示。