Amazon S3 バケットに接続して最新の本番バックアップをダウンロードする Ruby スクリプトがあります。私はスクリプトをテストしました (これは非常に単純です)。正常に動作します。
ただし、このスクリプトを 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」を実行すると、いつも使用しているのと同じユーザーとして実行されていることがわかります。
また、バンドルの初期化を行い、宝石を宝石ファイルに追加しましたが、これは何の影響もないようです。
cron が gem のロードに失敗するのはなぜですか? 私はUbuntuを実行しています。