編輯: 這裏的問題是,我在本地機器上使用RVM和在服務器上使用rbenv。如果你正在管理幾個ruby安裝(或者升級你的ruby版本,但不想改變系統),那麼這是非常不推薦的,在所有環境中使用RVM或rbenv! /EDITCapistrano部署失敗與耙運行(rails3 + rvm)
所以我會用一些歷史開始: 我在提升我們的rails2網站Rails3中的過程。除Capistrano的部署腳本外,大部分事情現在都在正常運行。 當前的設置我已經是:
- RVM本地
- 紅寶石1.9.3-P194(設置爲項目的文件夾)
- Capistrano的v2.12.0安裝(1.14.1)(從2.6升級2.0,但它不能在2.6.0工作以及)安裝爲RVM寶石
- RVM-Capistrano酒店(1.2.2),加入到Gemfile中(在網上做一些閱讀後和SO)
- rbenv(全球使用紅寶石1.9.3p194)安裝在服務器上
(到現在爲止,如果你看到任何沒有意義的,請讓我知道)
沒有在部署腳本改變,但是當我嘗試部署到我的測試服務器(姑且稱之爲公測)我得到這個錯誤:
* executing `deploy:restart'
* executing "cd /home/foo/bar/current && rake RAILS_ENV=beta queue:restart_workers"
servers: ["208.0..."]
[208.0...] executing command
*** [err :: 208.0...] rake aborted!
*** [err :: 208.0...] no such file to load -- bundler/setup
*** [err :: 208.0...] /home/foo/bar/releases/20120630161947/Rakefile:5
*** [err :: 208.0...] (See full trace by running task with --trace)
** [out :: 208.0...] (in /home/foo/bar/releases/20120630161947)
command finished in 1183ms
failed: "sh -c 'cd /home/foo/bar/current && rake RAILS_ENV=beta queue:restart_workers'" on 208.0...
上deploy.rb相關部分看起來是這樣的:
task :restart do
run "cd /home/foo/bar/current && rake RAILS_ENV=#{CAP_ENV} queue:restart_workers"
run "cd /home/foo/bar/current && rake RAILS_ENV=#{CAP_ENV} db:migrate"
run "touch #{deploy_to}/current/tmp/restart.txt"
end
不用說,rake RAILS_ENV=beta queue:restart_workers'
作品當在服務器上手動運行時是完美的。此外,應用程序被部署(代碼從git複製,它只是部署的最後一部分失敗)。
最後,錯誤並沒有改變,因爲在我安裝rvm-capistrano並添加到Gemfile之前,所以我甚至不確定它是否與rvm有關,我只是從在線觀看而猜測。
感謝
我不認爲你想同時使用rbenv和rvm--它們都是管理多個ruby版本的方式。 –
我有多個ruby版本。我從紅寶石1.8.7 + rails 2.3.2升級,並且我知道不建議更改本機ruby操作系統安裝(aka on/usr/bin/ruby)。 – Amir
rvm和rbenv都用於管理ruby版本,並且它們都以稍微不同的方式進行操作。同時使用兩者似乎是在向我求助麻煩。 rvm-capistrano可能會設置使用任何rvm認爲是目前的ruby,而不是什麼rbenv認爲 –