Ruby on Rails delayed_job gem:方法不在run_at时间执行

时间:2015-11-11 12:23:32

标签: ruby-on-rails delayed-job

我想使用delayed_job在经过一段特定时间后向用户发送通知。我正在ubuntu上运行rails 4.0.13版。

我在这里按照README:https://github.com/collectiveidea/delayed_job

添加了以下宝石:

gem 'daemons'
gem 'delayed_job_active_record'

创建表delayed_job:

rails generate delayed_job:active_record
rake db:migrate

生成delayed_job:

rails generate delayed_job

这在bin目录中创建了delayed_job.rb而不是脚本目录。我想这是因为我正在使用ruby Rails 4.0.13(来自README:Rails 4:用bin / delayed_job替换script / delayed_job)。

我的delayed_job.rb的内容:

#!/usr/bin/env ruby

require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize

RAILS_ENV=development bin/delayed_job start
RAILS_ENV=development bin/delayed_job stop

应该在特定时间运行的方法:

def send_notification
        print "==========SEND_NOTIFICATION============="
        #Some code to send notification to user
end
handle_asynchronously :send_notification, :run_at => Proc.new { 1.minute.from_now }

这会在db表延迟作业中创建一个条目,并在run_at列中显示正确的时间。但是这项工作从未执行过。尝试列保持为0并且终端中不打印任何内容。

rake jobs:work确实执行了该作业并将其从db中删除。

0 个答案:

没有答案