2016-01-09 2 views
0

У меня есть файл schedule.rb с резервной копией базы данных в ночное время. Код выглядит следующим образом:Всякий раз, когда gem Time.now всегда одинаковый

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

Однако файлы не обновляются и по моему журнал хрон:

GZIP: 29_12_2015_dump.sql.gz уже существует; не перезаписывается

gzip: 29_12_2015_dump.sql.gz уже существует; не перезаписано

Файл журнала был последним обновлен 8 января. Это будет означать, что Time.now одинаково каждый раз, когда каждый раз выполняется, то есть каждый день. Это кажется маловероятным, что может произойти?

+0

Вы используете timecop или любой подобный камень? –

+0

нет Я не использую timecop. –

+0

Что делать, если вы замените 'Time.now' на' Date.today'? –

ответ

0

Я понял, в чем проблема: whenever записывает файл schedule.rb в crontab один раз, поэтому код ruby ​​внутри файла оценивается только в этой точке, а не каждый раз, когда выполняется задание. Таким образом, «метка времени» имеет статическое значение, равное значению дня, которое было записано в crontab.

Смежные вопросы