2013-06-04 65 views
1

我目前在使用bundler和ruby時遇到了一個奇怪的問題。 如果I型:爲什麼bundle exec rake無法運行到正確版本的ruby

$ which ruby 

我得到:

/home/martinos/.rubies/1.8.7-p370/bin/ruby 

當我鍵入:

$ which bundle 

我得到

/home/martinos/.gem/ruby/1.8.7/bin/bundle 

但由於某些原因,當我運行

$ bundle exec rake db:migrate 

的任務是用Ruby 1.9.3運行(我已經寫在environment.rb中一放RUBY_VERSION)

任何一個作爲一個想法,爲什麼出現這種情況?

這裏有更多的相關信息: 當我鍵入:

$ which rake 

我得到:

/home/martinos/.gem/ruby/1.8.7/bin/rake 

但如果我

$ head -1 `which rake` 

我得到:

#!/usr/bin/env ruby1.9.1 

回答

1

有各種各樣的可能發揮作用。首先,它可能是你的Ruby版本管理工具和你的全球寶石之間的衝突。意思是,我想可能你只有一個Rake版本可以在你的全局集合中的Ruby 1.9.1上工作。所以當你啓動Rake時,它將被迫在Ruby 1.9.1中運行。

你可能想要做的是創建一個目錄特定的gemset。如果您使用的是RVM,您可以通過查看他們的Gemset documentation來查看有關如何執行此操作的文檔。一旦你想要測試的Ruby版本到位,那麼Rake的gem install就可以在該版本中使用。在這一點上,您應該發現用於在該目錄中運行Rake的Ruby版本將與您運行的版本相同。

我很抱歉,如果這不能回答你的問題,或者你已經想到了這種方法。試圖把我的頭圍繞在這個沒有能力重現問題是一個棘手的交易。

相關問題