我試圖在Redmine應用程序中導入電子郵件時在Openshift上設置cron作業。所以,我準備了這樣一個小小的腳本:Rake任務在cron作業中有錯誤的環境Openshift
#!/bin/bash
rake RAILS_ENV=production -f ${OPENSHIFT_REPO_DIR}/Rakefile redmine:email:receive_imap host=imap.googlemail.com port=993 ssl=1 [email protected] password=yyy ...
當在ssh連接上手工啓動時,它運行時沒有問題。當由cron運行時,相反,找不到耙子。 進行一些調試,我發現路徑與登錄shell不一樣;即使我使用了rake的完整路徑,發現的ruby版本是1.8(不是每個磁帶盒的1.9),並且每當我設置與shell相同的路徑時,就找不到libruby-1.9。
繼其他一些意見,我嘗試添加以下行部位設定的自定義路徑的:
source /usr/bin/rhcsh
但儘管如此耙仍然沒有找到。我也嘗試使用bundle exec。
在Openshift上爲cron設置環境的正確方法是什麼,以便它可以像登錄shell一樣運行?
的多個版本擺脫在一個shell腳本,尤其是在cron作業,你不應該依賴在'$ PATH'上,你應該引用'rake'你絕對想要。這是一種安全措施,否則執行特權代碼太簡單了。那樣也不會有路徑問題。 – Patru