Delayed_job没有保存在数据库中

时间:2015-01-20 14:11:43

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord delayed-job

我正在使用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)

1 个答案:

答案 0 :(得分:0)

我意识到我正在处理的应用程序已经将Sidekiq用于其他目的,看起来就像那些受干扰的那样。当Sidekiq界面打开时,我可以看到那里的工作,尽管他们没有在延迟的工作查询中显示。