每当gem都不运行任务,而是在终端运行

时间:2019-11-13 13:35:15

标签: ruby ruby-on-rails-3 whenever

任务文件

require 'report.rb'
require 'rake'

    namespace :daily_report do
      desc "Daily Parakh Report"
      task daily_operator_report: :environment do
        puts "Daily report generation started"
        Reports::Report.generate_csv
        puts "finished"
      end
    end

schedule.rb文件

set :environment, "development"

set :output, "home/rajdeep/police-api/log/whenever.log"

every 1.minute do # Many shortcuts available: :hour, :day, :month, :year, :reboot
  rake "daily_report:daily_operator_report"
end

什么也没有发生,即使没有创建.log文件,任务也不会运行。

当我在终端机上运行rake daily_report:daily_operator_report时,它会起作用。

更新 我检查了我的Cron日志,发现了这个 Nov 15 12:59:01 rajdeep-ThinkPad-T460s CRON[22125]: (rajdeep) MAIL (mailed 159 bytes of output but got status 0x004b from MTA#012) Nov 15 13:00:01 rajdeep-ThinkPad-T460s CRON[22299]: (rajdeep) CMD (/bin/bash -l -c 'cd /home/rajdeep/police-api && RAILS_ENV=development bundle exec rake daily_report:daily_operator_report --silent >> home/rajdeep/police-api/log/whenever.log 2>&1') Nov 15 13:00:02 rajdeep-ThinkPad-T460s CRON[22298]: (rajdeep) MAIL (mailed 159 bytes of output but got status 0x004b from MTA#012) Nov 15 13:01:01 rajdeep-ThinkPad-T460s CRON[22474]: (rajdeep) CMD (/bin/bash -l -c 'cd /home/rajdeep/police-api && RAILS_ENV=development bundle exec rake daily_report:daily_operator_report --silent >> home/rajdeep/police-api/log/whenever.log 2>&1') Nov 15 13:01:01 rajdeep-ThinkPad-T460s CRON[22473]: (rajdeep) MAIL (mailed 159 bytes of output but got status 0x004b from MTA#012) Nov 15 13:02:01 rajdeep-ThinkPad-T460s CRON[22645]: (rajdeep) CMD (/bin/bash -l -c 'cd /home/rajdeep/police-api && RAILS_ENV=development bundle exec rake daily_report:daily_operator_report --silent >> home/rajdeep/police-api/log/whenever.log 2>&1') Nov 15 13:02:01 rajdeep-ThinkPad-T460s CRON[22644]: (rajdeep) MAIL (mailed 159 bytes of output but got status 0x004b from MTA#012)

最初它是给我info (No MTA installed, discarding output)然后安装MTA(没有配置,因为我没有使用任何mailto)。 我不知道这些日志由什么组成。如上所述,当我运行rake daily_report:daily_operator_report时,该任务可以正常工作并生成了csv文件,但在任何时候自动使用时都不会发生。

1 个答案:

答案 0 :(得分:0)

我认为您的crontab条目不正确。对于6:46 PM,您应该得到

46 18 * * * /bin/bash -l -c 'cd /home/rajdeep/police-api && RAILS_ENV=production bundle exec rake daily_report:daily_operator_report --silent >> home/rajdeep/police-api/log/whenever.log 2>&1'

每当还默认将RAILS_ENV设置为production时。要覆盖这一点,说发展,

set :environment, "development"

位于config/schedule.rb文件顶部

不要忘记通过运行bundle exec whenever --update-crontab来更新crontab,然后通过运行crontab -l来确认您具有正确的crontab条目