2013-11-04 38 views
1

我創建Bundle是我的rails版本,但我沒有創建文件。如何阻止此?

$ rvm gemset create r3 
$ rvm gemset use r3 
$ gem install rails -v3.2.13 

一個寶石此時

$ rails -v 

現在顯示

$ Rails 3.2.13 

但每次我都用我分叉一個項目綁定的時候,我發現,

rails -v 

顯示Rails 4.0.1 - 然後在運行測試
4.0.13.2.13衝突)時提供有問題的項目問題。

我的問題是 - 如果我的Gemfile只有:

$ cat Gemfile 
source 'https://rubygems.org' 

gemspec 

怎麼會這樣呢?我怎樣才能讓我的命令行ruby版本保持在3.2.13而不是切換到4.0.1一旦它切換到4.0.1我似乎被困在那個gemset和創建一個3.2.13 gemset我不得不重新開始。

回答

1

Bundle的工作原理是找到與Gemfile中的限制兼容的最新版本的gem。在這種情況下,這些限制來自gemspec文件,這大概允許Rails版本大於3.2.13。所以它選擇了最新版本的Rails allowed - 這是4.0.1。您的RVM配置在這裏不相關。

要鎖定特定叉到Rails 3.2.13,只需添加以下內容:

gem 'rails', '3.2.13' 

到Gemfile中在你的叉子。當你運行bundle時,這會將本地版本鎖定到3.2.13。

0

,如果你想明確地使用的rails不同的版本,那麼會從Gemfile計算的一個,那麼你需要使用:

NOEXEC_DISABLE=1 rails ... 

,你可以把它永久的單殼會議有:

export NOEXEC_DISABLE=1 
rails ... 

,並通過Gemfile計算版本禁用加載寶石把它放在你的shell初始化文件(如~/.bash_profile~/.zlogin):

export NOEXEC_DISABLE=1 

出現這種情況是因爲RVM安裝寶石rubygems-bundler當您運行的寶石二進制文件,如果通過該文件指定的版本與可用,則加載(即使它只是爲你的寶石的相關性中指定自動分析您Gemfile )。

相關問題