每当宝石Time.now总是一样的

时间:2016-01-09 13:57:51

标签: ruby-on-rails cron whenever

我有一个schedule.rb文件,每晚运行数据库备份。代码如下:

every :day, :at => '10:20pm' do
  fname = Time.now.strftime('%d_%m_%Y_dump.sql')
  command "pg_dump -f #{fname}"
  command "gzip #{fname}"
end

但是,文件没有更新,根据我的cron日志:

  

gzip:29_12_2015_dump.sql.gz已经存在;没有被覆盖

     

gzip:29_12_2015_dump.sql.gz已经存在;没有被覆盖

日志文件最近更新于1月8日。这意味着Time.now每次运行时都是相同的,即每天。这似乎不太可能,可能会发生什么?

1 个答案:

答案 0 :(得分:0)

我意识到问题所在:whenever将其schedule.rb文件写入crontab一次,因此文件中的ruby代码仅在该点评估,而不是每次运行作业时。因此"时间戳"具有等于​​写入crontab的日期的静态值。