我有一个 ruby 脚本,它连接到 Amazon S3 存储桶并下载最新的生产备份。我已经测试了脚本(非常简单),它工作正常。
但是,当我将此脚本安排为作为 cron 作业运行时,它在加载 Amazon (aws-s3) gem 时似乎失败了。
我的脚本的前几行如下所示:
#!/usr/bin/env ruby
require 'aws/s3'
正如我所说,当我手动运行此脚本时,它工作正常。当我通过计划的 cron 作业运行它时,它在尝试加载 gem 时失败:
`require': 没有要加载的文件 -- aws/s3 (LoadError)
此脚本的 crontab 如下所示:
0 3 * * * ~/Downloader/download.rb > ~/Downloader/output.log 2>&1
我最初认为这可能是因为 cron 以不同的用户身份运行,但是当我在 ruby 脚本的开头执行“whoami”时,它告诉我它以我一直使用的同一用户身份运行。
我还做了一个 bundle init 并将 gem 添加到我的 gemfile 中,但这似乎没有任何影响。
为什么 cron 无法加载 gem?我正在运行 Ubuntu。