2012-05-15 39 views
1

注:在我的環境(詳情如下)我有固定/破解這個問題,但我真的想明白髮生了什麼&提供資源,如果發生這種情況給他人。希望這是一個正確的使用堆棧。 :)爲什麼RVM/Bundler集成會破壞RVM與終端的加載?

我經歷邁克爾·哈特爾的Ruby on Rails的教程(第二版),我今天打我的第一個重大障礙。

在第三章中,section 3.6.1 "Eliminating Bundle Exec",我執行這些命令來獲取Ruby版本管理器(RVM),以「調整」我的所有項目的路徑,這樣我可以停止鍵入捆綁高管經常:

$ rvm get head && rvm reload 
$ chmod +x $rvm_path/hooks/after_cd_bundler 
$ cd /path/to/project 
$ bundle install --binstubs=./bundler_stubs 

..和瞧!我無法再運行RVM,或許多其他常用功能(我還是新來的Rails,所以我不知道是什麼關係,或者起源這些命令的份額)。我做了完全重啓,因爲我來自Windows,這就是你做什麼時,狗屎變得時髦,但問題依然存在! BLLARG!

誤差爲捆綁,RVM等相同的:

-bash:RVM:命令未找到

(注:也在這段時間,我修改xcode的-select -switch from/Developer to some other,crazier path - 參見this link for details如果你認爲這可能起作用)

我做了一些diggin g,並且發現,這可能是與我的$ PATH,所以這裏是我的ENV $ PATH,如果它的問題:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin 

的路徑似乎錯了 - 那裏應該是一些RVM東西在那裏,還是在那裏一些打包商的東西 - 這是變化的要點! - 所以我做了一些更多的挖掘,並發現我的文件系統仍然完好無損,並尋找良好(RVM仍安裝,Gemfile中仍然是正確的,等等),然而在我的終端會話的Ruby版本是舊(v1.8.7) Rails甚至沒有安裝,所以它開始變得更像會話或RVM特定的問題。

做了一些更多的挖掘和發現,如果我手動運行以下命令(從〜/ .bash_login文件)在終端,一切工作:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* 

YES!

當我關閉&重新打開終端,問題回來了,但是當我重新執行上面的問題再次被固定的命令。很顯然,這只是在終端中沒有正確加載的問題,對不對?

我把上面的命令移到了〜/ .bash_profile(這以前是空的,除了提示樣式),並且問題對我來說完全是固定的。我可以關閉&重新打開終端,我去比賽。

但是發生了什麼?爲什麼這個命令在〜/ .bash_login而不是〜/ .bash_profile?我很想了解發生了什麼事情,這樣我就可以減少&,以便其他人可以避開我剛剛進行的2小時Google搜索冒險。 :)

謝謝!

環境:

  • 的Mac OS X 10.7.4(獅子)
  • 終端(內置)
  • 崇高文本2

回答

0

選擇其中一個文件並將其合併到第二個文件中。

RVM檢查這兩個文件,只要包含加載RVM就可以工作。

爲了擺脫bundle exec你可以使用我的寶石RubyGems的打捆,它將被集成到打捆1.3所以沒有更多額外的工具/腳本/技巧將被要求即可。

+0

感謝mpapis - 但我的問題更多的是關於爲什麼下面的命令打破了我的環境(而不是如何解決它):$ rvm get head && rvm reload $ chmod + x $ rvm_path/hooks/after_cd_bundler $ cd/path/to/project $ bundle install --binstubs =。/ bundler_stubs – toblerpwn

+0

檢查我的第一句話,您需要合併您的登錄文件 – mpapis

+0

爲什麼它在我運行命令之前工作先前的評論?爲什麼這些變化會導致我的環境失敗?在兩種情況下,RVM都不應該使我的〜/ .bash_profile和其他相關文件相同嗎?我意識到這個問題純粹是學術問題 - 但現在這對我來說很重要。 :) – toblerpwn

0

嗯,登錄腳本會在不同的運行倍。你可以在這個so question看到一些細節。但根據this~/.bash_login~./bash_profile的別名。所以我不確定爲什麼一個人跑你,而另一個沒有。

但是,在我的系統(Mac OS X 10.6)上,我沒有~/.bash_login文件。我有rvm和bundler。

可能相關 - 我已經安裝了自制軟件,它暗示我的路線/usr/local/bin之前/usr/bin。這是如此自制安裝項目和我自己安裝的項目將優先於系統安裝的。

+0

謝謝dty - 但我的問題是關於爲什麼以下命令打破了我的環境(而不是如何解決它):$ rvm get head && rvm reload $ chmod + x $ rvm_path/hooks/after_cd_bundler $ cd/path/to/project $ bundle install --binstubs =。/ bundler_stubs – toblerpwn

相關問題