gpt4 book ai didi

ruby-on-rails - Rails Capistrano - 每当 Cron 为每个部署附加 cron 作业时

转载 作者:行者123 更新时间:2023-12-05 02:20:36 24 4
gpt4 key购买 nike

我正在使用:

Ruby     1.9.3
whenever 0.9.4
Rails 3.2
and capistrano/whenever extension.

每当部署发生时,它都会在每次部署后将条目添加到 crontab 文件中。自 5 次部署以来,crontab -l 中有 40 个条目,因为 schedule.rb 有 8 个 cron 条目。每个版本都有不同的条目。它不应该默认覆盖条目吗?

每次在 schedule.rb 文件中提到时,它都会重新创建条目。

最佳答案

我发现每当向 crontab 文件中添加一个 cron 作业时,每个 cron 作业都由一个注释行分隔,其中包含到 capistrano 发布目录的路径...像这样:

# Begin Whenever generated tasks for: /home/path/www/to/releases/2070527160502/config/schedule.rb

(您可以使用 crontab -e 查看原始的 crontab 文件,看看其中放了什么)

下一次部署发生时,无论何时查看是否有以注释分隔的 cron 作业,但使用 版本号。它没有找到,所以它将新作业附加到 crontab 文件。

我解决此问题的方法是在 deploy.rb 中指定 update_crontab 任务,并指定 schedule.rb 的显式路径,如下所示:

namespace :deploy do
task :update_crontab do
on roles(:all) do
within current_path do
execute :bundle, :exec, :whenever, "--update-crontab", "~/path/to/current/config/schedule.rb"
end
end
end
end
after 'deploy:symlink:release', 'deploy:update_crontab'

因此 crontab 文件中的注释分隔符包含“当前”路径而不是“releases/nnnnnnnnnnn”路径。

我怀疑这不是必需的,但在尝试解决问题一段时间后,这就是我最终得到的结果。

关于ruby-on-rails - Rails Capistrano - 每当 Cron 为每个部署附加 cron 作业时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com