2011-04-18 24 views
3

我正在使用whenever gem with rails 3.在我的生產服務器(ubuntu)上,runner任務不運行。我試圖設置:set job_template以獲得-l -i,如this github ticket中所述。但是這並不能解決問題。每當導軌3的crontab文件中的PATH ubuntu

在這個特定的生產Ubuntu的問題是,紅寶石路是不是有在echo $PATH

echo $PATH 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 

而紅寶石路徑是/var/rails/myapp/shared/bundle/ruby/1.8/bin

因此,如果我手動編輯crontab文件並將PATH=/var/rails/myapp/shared/bundle/ruby/1.8/bin: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games添加到crontab文件,runner任務將正確執行。

但是,每次我進行部署時,我都需要手動編輯crontab文件以向其添加PATH語句。

是否有任何方法在crontab文件中添加此PATH行,以便在每次部署後都不需要手動執行此操作?

感謝

回答

1

我覺得如果你/var/rails/myapp/shared/bundle/ruby/1.8/bin添加到任何用戶cron是在服務器上運行的路徑,應該接走。或者,你可以在每次schedule.rb添加:

env :PATH, "$PATH:/var/rails/myapp/shared/bundle/ruby/1.8/bin" 

應該做的伎倆,但我沒有測試它。

+0

謝謝!將/var/rails/myapp/shared/bundle/ruby/1.8/bin添加到cron用戶的PATH或編輯/ etc/environment或cron用戶的bashrc不起作用。它只在PATH語句存在於crontab文件中時有效。您提到的env:PATH選項正確地將PATH行添加到crontab文件。只有一個問題是添加$ PATH的語法。當前的方法不擴展$ PATH值。因此,在crontab文件中輸入的行是PATH = $ PATH:/var/rails/myapp/shared/bundle/ruby/1.8/bin。 – ami 2011-04-19 06:08:09

0

添加PATH語句crontab文件的頂部,啓動

# BEGIN Whenever generated tasks for: 

前行,你不應該每次都手動編輯crontab文件

1

從idlefingers答案看上去大多是正確的,但基於來自AMI的評論,我想該行更改爲以下:

env :PATH, "#{ENV["PATH"]}:/var/rails/myapp/shared/bundle/ruby/1.8/bin" 

通知串插了ENVIRON通路鑰匙。我沒有測試過這個,但是根據ami的評論,這應該像預期的那樣完全擴展crontab文件中的路徑字符串。

3

我沒有使用RVM,並在config/schedule.rb文件中添加下面的代碼(當你寫出與gem相關的代碼時,它就會寫入)。

env :PATH, ENV['PATH']