首页 > 解决方案 > 更新 crontab(无论何时 gem)

问题描述

通过执行无论何时 --update-crontab 命令,返回以下错误:

/usr/lib/ruby/vendor_ruby/whenever/cron.rb:132:in `parse_as_string': Couldn't parse: 31557600 (ArgumentError)
    from /usr/lib/ruby/vendor_ruby/whenever/cron.rb:112:in `parse_time'
    from /usr/lib/ruby/vendor_ruby/whenever/cron.rb:50:in `time_in_cron_syntax'
    from /usr/lib/ruby/vendor_ruby/whenever/cron.rb:42:in `output'
    from /usr/lib/ruby/vendor_ruby/whenever/cron.rb:36:in `block (2 levels) in output'
    from /usr/lib/ruby/vendor_ruby/whenever/cron.rb:35:in `each'
    from /usr/lib/ruby/vendor_ruby/whenever/cron.rb:35:in `block in output'
    from /usr/lib/ruby/vendor_ruby/whenever/cron.rb:34:in `each'
    from /usr/lib/ruby/vendor_ruby/whenever/cron.rb:34:in `output'
    from /usr/lib/ruby/vendor_ruby/whenever/job_list.rb:151:in `block (2 levels) in cron_jobs'
    from /usr/lib/ruby/vendor_ruby/whenever/job_list.rb:147:in `each'
    from /usr/lib/ruby/vendor_ruby/whenever/job_list.rb:147:in `block in cron_jobs'
    from /usr/lib/ruby/vendor_ruby/whenever/job_list.rb:146:in `each'
    from /usr/lib/ruby/vendor_ruby/whenever/job_list.rb:146:in `cron_jobs'
    from /usr/lib/ruby/vendor_ruby/whenever/job_list.rb:65:in `generate_cron_output'
    from /usr/lib/ruby/vendor_ruby/whenever.rb:10:in `cron'
    from /usr/lib/ruby/vendor_ruby/whenever/command_line.rb:54:in `whenever_cron'
    from /usr/lib/ruby/vendor_ruby/whenever/command_line.rb:106:in `updated_crontab'
    from /usr/lib/ruby/vendor_ruby/whenever/command_line.rb:35:in `run'
    from /usr/lib/ruby/vendor_ruby/whenever/command_line.rb:6:in `execute'
    from /usr/bin/whenever:41:in `<main>'

我的 schedule.rb 文件:

every 1.year do
  rake "maintenances:renew"
end

有任何想法吗?

标签: ruby-on-railsrubycronwhenever

解决方案


如果您在使用1.year方法时遇到问题,可以使用以下两种替代方法。

1 - 快捷方式

every :year do
  rake "maintenances:renew"
end

2 - 表达式

every '0 0 1 12 *' do
  rake "maintenances:renew"
end

如果您想了解有关这些选项的更多信息,请查看官方文档

要测试表达式,我推荐crontab.guru


推荐阅读