任务文件
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文件,但在任何时候自动使用时都不会发生。
答案 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条目