2017-08-01 82 views
1

對於一個新項目,我不得不使用ruby 2.5.0版本。爲什麼我不能使用其他版本的Ruby?如何讓rbenv和bundler一起工作,而不會在項目中碰撞版本?

我選擇了紅寶石版本rbenv local 2.4.0,但是當我輸入ruby -v,我讀:

ruby 2.5.0dev (2017-08-01 trunk 59456) [x86_64-darwin16] 

bundled env了Ruby的版本是2.5.0紅寶石檢查。

設置我的項目需要紅寶石2.4.0,和我看到這條消息在運行時bundle

Your Ruby version is 2.5.0, but your Gemfile specified 2.4.0 

bundle能夠安裝我的項目的依賴,但只有當該項目指定的紅寶石版本2.5.0。

這是怎麼回事?如何用rbenv和bundler管理和配置不同的ruby版本?我應該有不同版本的捆綁器來安裝每個項目各自的寶石與他們相應的紅寶石版本?我是否錯過了gem cli,它似乎只安裝捆綁ruby版本設置爲2.5.0的捆綁軟件?

+0

試試'rbenv global 2.4.0 && rbenv rehash && bundle',會發生什麼? –

+0

你的第一個問題與你的其他問題有根本的不同。它應該是一個單獨的問題,你應該從這裏刪除該部分。 – sawa

回答

0

Rbenv作爲rvm提供全局設置一個紅寶石版本。否則,用戶必須在其控制檯中的每個項目中每次指定ruby版本。

$ ruby -v 
ruby 2.5.0(...) 

$ rbenv local 2.4.0 
$ ruby -v 
ruby 2.4.0(...) 

Read more about specify ruby version in rbevn

如果這不起作用嘗試重新安裝rbenv。在爲你的系統找到這個問題的答案之前,你可以使用rvm。

因此,您可以打開兩個控制檯選項卡,並在每個選項卡中指定兩個不同的ruby版本。它會工作。 當用戶在heroku或capistrano上部署他的項目時,也會忽略他的gemfile中的ruby版本。對於capistrano,我們需要在capfile或deploy.rb上指定ruby版本,每次重新部署項目或重新啓動服務器時,都應該在rbenv或rvm中設置ruby版本。