我試圖讓Capistrano在我的MacBook(OSX Mountain Lion)上工作,但我遇到了很多困難。它開始與它拋出一個錯誤:Capistrano使用舊的紅寶石版本
cillosis:myapp macbook$ cap deploy
/Library/Ruby/Gems/1.8/gems/sshkit-1.2.0/lib/sshkit.rb:32: undefined method `require_relative' for main:Object (NoMethodError)
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/1.8/gems/capistrano-3.0.1/lib/capistrano/all.rb:2
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/1.8/gems/capistrano-3.0.1/bin/cap:2
from /usr/bin/cap:19:in `load'
from /usr/bin/cap:19
看來我有紅寶石1.8安裝和它不與Capistrano的正常工作(發現這個周圍的Googling)。
所以我使用rvm安裝了Ruby 2.0。 RVM開始拋出一堆錯誤,所以我用rvm implode
擺脫它,發現2.0版本仍然在我的電腦上。我檢查了我的$ PATH,它指向的位置包含Ruby 1.8。所以我將其重命名爲* ruby_old *並將新的ruby複製到該文件夾(/usr/bin)。然後當我做了ruby -v
它回來了2.0版本。所以我想,很好,現在我們終於可以運行Capistrano。
可以肯定的是,我做了一個gem update
,它回來後更新了之前拋出錯誤的sshkit寶石。所以我開始部署,並獲得與我開始時一樣的確切錯誤。
我知道deploy.rb腳本是正確的,因爲我一直在另一臺Mac上使用它。
TL; DR;經過一番摸索之後,當我輸入ruby -v
時,它回到2.0版本,但是當我用Capistrano做cap deploy
時,它嘗試使用1.8版本的紅寶石。我該如何解決?
你說「Gemfile」,我說吧?我不是一個紅寶石開發人員,所以不熟悉很多術語。我主要使用PHP編寫,因爲Capistrano需要使用Ruby。你知道爲什麼Capistrano抓取舊版本嗎?它自己安裝了多少個地方? –
啊,理解。所以你正試圖部署一個與capistrano的PHP應用程序?爲什麼不,我猜... 這個問題很可能是你的機器上安裝的ruby版本是舊的(所以我假設你使用的是一個mac,因爲他們帶有一箇舊的borked版本)。 我肯定會推薦卸載並重新安裝ruby版本*和* RVM,然後重新安裝RVM並通過RVM安裝Ruby 1.9.x。 *然後*用卡皮斯特拉諾來做你的魔法,然後回來再回答這個問題。 –
我想你的建議的問題是「卸載」紅寶石。我只是刪除/ Library/ruby文件夾?那麼坐在/ etc/bin或/etc/local/bin...中的版本又有什麼變化呢,假設Ruby在這些位置之一有什麼? –