【问题标题】:How to put filename in cron job (rails)?如何将文件名放入 cron 作业(rails)中?
【发布时间】:2017-01-09 04:46:30
【问题描述】:

我一直在使用 gem。我正在打电话给跑步者来跑步。我用 3 种类型为同样的工作打电话给跑步者。我不确定哪一个在这里工作。

我使用命令whenever --update-crontab project_name 然后crontab -l

Schedule.rb

set :output, 'log/whenever.log'
every 1.days , :at => '03:51 pm' do 

 runner "SomeJob.perform_later", filename: '/app/jobs/some_job.rb'
end

every 1.days , :at => '03:51 pm' do
  runner "SomeJob.perform_later", filename: './app/jobs/some_job.rb'
end

every 1.days , :at => '03:51 pm' do
  runner "SomeJob.perform_later"
end

这些也只运行一次。我很难在这里调试。

谁能说出哪一个是正确的?在这种情况下调试的正确方法是什么?

运行 crontab -l 给了我这个 -

51,51,51 16 * * * /bin/bash -l -c 'cd /home/rahul/orthoweb && bin/rails runner -e production '\''InvestigationStopJob.perform_later'\'' >> log/whenever.log 2>&1

为了在开发环境中运行,我运行了这个命令 -

whenever --update-crontab --set environment='development'

但这给了我这个信息 -

## [message] Above is your schedule file converted to cron syntax; your crontab file was not updated.

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 cron


    【解决方案1】:

    在开发模式下运行作业存在一些问题。 有效的是,您必须在运行作业和调度程序之前关闭所有选项卡。

    无需在计划文件中更改环境设置。 要在开发中运行,请使用此

    whenever --update-crontab --set environment='development'
    

    如果不指定文件名,作业将无法正常运行。以下行正常工作。

    every 1.days , :at => '03:51 pm' do runner "SomeJob.perform_later", filename: '/app/jobs/some_job.rb' end

    【讨论】:

      【解决方案2】:

      我认为,生成的 crontab 仅包含其中一项任务,因为它们已被覆盖。

      可以肯定的是,通过键入 whenever 查看生成的 crontab。我想只有一个入口。

      【讨论】:

      • 我也一项一项地运行这些任务,但没有成功。我跑了whenever 也没有用。我是否需要运行其他东西才能在开发中运行 crontab? @maicher
      • 您在log/whenever.log 文件中看到任何日志吗?如果没有,可能 CRON 没有运行。此外,您必须按计划设置环境,请参阅:stackoverflow.com/a/5879008/2933305
      • 感谢您的回复。解决了这个问题。这是一个愚蠢的
      猜你喜欢
      • 2011-03-25
      • 1970-01-01
      • 2011-05-29
      • 2013-05-09
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      相关资源
      最近更新 更多