无法在何时运行我的rake任务

时间:2014-07-26 00:49:24

标签: ruby-on-rails ruby cron whenever

我想让whenever运行我的佣金任务,但它不起作用。

#Command Line
$ whenever -w
[write] crontab file written


#schedule.rb
every :year, :at => "2014-07-25 17:39:48 -0700" do
  rake 'timeperiod:create_timeperiod'
end

rake命令将模型保存在db和puts文本中,以便我知道它是否有效(当我运行rake时它会这样做)。在语法上我做了什么错了吗?

请注意,schedule.rb中的时间和日期是任意的,我会在测试之前将其更改为两分钟。

4 个答案:

答案 0 :(得分:1)

您的任务可能失败,因为cron使用的shell与普通用户使用的shell不同。

检查crontab的日志:

grep CRON  /var/log/syslog

答案 1 :(得分:0)

为什么不验证您的命令是否已添加到crontab?

$ crontab -l

您也可以手动添加作业。

$ whenever
* * * * * * bash -l 'cd /path/to/dir; rake your:task'

$ crontab -e
# add the cron job

此外,cron作业的输出不会输出到屏幕;它转到你的邮件。检查你的邮箱。

从手册页:

  

执行命令时,任何输出都会邮寄给所有者   crontab(或者在MAILTO环境变量中命名的用户)   crontab,如果存在的话)。孩子的副本cron运行   正如将要看到的,这些进程的名称被强制为大写   在syslog和ps输出中。

答案 2 :(得分:0)

对我来说,我使用命令,但我认为这不是最好的情况。说我的仓库在$ HOME / www / virtualspirit中,在我的存储库中。所以我的随便命令将是cd / www / virtualspirit&& /$HOME/.rvm/rubies/ruby-2.1.2/bin/rake timeperiod:create_timeperiod RAILS_ENV = production

在crontab -e中仔细检查并查看是否已保存。

答案 3 :(得分:-1)

这里有几个问题。

  1. 使用命令whenever --update-crontab <name of identifier>
  2. 添加cron作业的最佳方法
  3. 格式不正确。通过直接在cron中指定时间,我能够使它工作。
  4. 例如:

    #schedule.rb
    every '13 15 26 7 *' do
      rake 'timeperiod:create_timeperiod'
    end