0

我在一个基于 Rails 的网站上工作,我必须使用sitemap_generatorgem 创建一个站点地图。

到目前为止一切顺利,直到我到达必须自动化站点地图生成的部分。我需要运行以刷新站点地图的 2 个命令是direnv allow && rake sitemap:refresh.

我正在尝试使用whenevergem 创建一个 cron 作业,这就是我里面的内容config/schedule.rb

# config/schedule.rb

set :output, "tmp/cron.log"
set :environment, "development"

every 1.minutes do
    command "/Users/<user>/<project>/generate_sitemap.sh"
end

generate_sitemap.sh文件位于项目根目录中,内容如下:

# generate_sitemap.sh
#!/bin/bash

direnv allow
rake sitemap:refresh

为了激活 cron 作业,我whenever --update-crontab在终端中执行。通过运行crontab -l,我有以下输出:

# Begin Whenever generated tasks for: /Users/<user>/<project>/config/schedule.rb at: 2022-01-27 18:51:18 +0200
* * * * * /bin/bash -l -c '/Users/<user>/<project>/generate_sitemap.sh >> tmp/cron.log 2>&1'

# End Whenever generated tasks for: /Users/<user>/<project>/config/schedule.rb at: 2022-01-27 18:51:18 +0200

我必须提到,如果我./generate_sitemap.sh从命令行执行,它可以工作。此外,如果我按如下方式创建 cron 作业 config/schedule.rb

# config/schedule.rb

set :output, "tmp/cron.log"
set :environment, "development"

every 1.minutes do
    rake "sitemap:refresh"
end

direnv allow它已执行,但由于未事先执行而导致错误。

我的问题是:如何创建一个同时执行direnv allow和的 cron 作业rake sitemap:refresh

4

0 回答 0