我有一個ruby腳本,連接到Amazon S3存儲桶並下載最新的生產備份。我測試了這個腳本(這非常簡單)並且工作正常。Cron作業無法加載寶石
但是,當我安排此腳本作爲cron作業運行時,它在加載Amazon(aws-s3)gem時似乎失敗。
我的劇本的前幾行看起來是這樣的:
#!/usr/bin/env ruby
require 'aws/s3'
正如我所說的,當我手動運行該腳本,它工作正常。
'需要':當我通過預定的cron作業運行它,它時,它會嘗試加載寶石失敗沒有這樣的文件來加載 - AWS/S3(LoadError)
的crontab的這個腳本是這樣的:
0 3 * * * ~/Downloader/download.rb > ~/Downloader/output.log 2>&1
本來我以爲這可能是因爲cron是運行作爲不同的用戶,但是當我做一個「WHOAMI」在我的Ruby腳本開始就告訴我,它的運行作爲我一直使用的用戶。
我也做了一個bundle init,並將gem添加到我的gemfile中,但這似乎沒有任何影響。
爲什麼cron無法加載寶石?我正在運行Ubuntu。
在非cron的環境中執行echo $PATH
,複製路徑並將其粘貼到你的crontab,命令之前,
原來我需要在該shell中安裝rubygems。這幫助我追蹤下來。 –