2017-07-31 136 views
0

當我運行,bundle我看到以下內容:的Ruby版本和項目不匹配

Your Ruby version is 2.5.0, but your Gemfile specified 
2.4.0.pre.dev 

我的Gemfile看起來像:

source 'https://rubygems.org' 
ruby '2.4.0-dev' 
gem 'sinatra', :github => 'sinatra/sinatra' 

這是我gem env

$ gem env 
RubyGems Environment: 
    - RUBYGEMS VERSION: 2.6.12 
    - RUBY VERSION: 2.5.0 (2017-07-31 patchlevel -1) [x86_64-darwin16] 
    - INSTALLATION DIRECTORY: /Users/johndoe/.rbenv/versions/2.4.0-dev/lib/ruby/gems/2.5.0 
    - USER INSTALLATION DIRECTORY: /Users/johndoe/.gem/ruby/2.5.0 
    - RUBY EXECUTABLE: /Users/johndoe/.rbenv/versions/2.4.0-dev/bin/ruby 
    - EXECUTABLE DIRECTORY: /Users/johndoe/.rbenv/versions/2.4.0-dev/bin 
    - SPEC CACHE DIRECTORY: /Users/johndoe/.gem/specs 
    - SYSTEM CONFIGURATION DIRECTORY: /Users/johndoe/.rbenv/versions/2.4.0-dev/etc 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86_64-darwin-16 
    - GEM PATHS: 
    - /Users/johndoe/.rbenv/versions/2.4.0-dev/lib/ruby/gems/2.5.0 
    - /Users/johndoe/.gem/ruby/2.5.0 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - "gem" => "-n/usr/local/bin" 
    - REMOTE SOURCES: 
    - https://rubygems.org/ 
    - SHELL PATH: 
    - /Users/johndoe/.rbenv/versions/2.4.0-dev/bin 
    - /Users/johndoe/.rbenv/libexec 
    - /Users/johndoe/.nvm/versions/node/v8.1.4/bin 
    - /usr/local/sbin 
    - /Library/Frameworks/Python.framework/Versions/3.4/bin 
    - /Users/johndoe/.rbenv/shims 
    - /Users/johndoe/google-cloud-sdk/bin 
    - /Users/johndoe/Library/Python/2.7/bin 
    - /Users/johndoe/.rbenv/bin 
    - /usr/local/bin 
    - /usr/bin 
    - /bin 
    - /usr/sbin 
    - /sbin 

當我輸入rbenv verions這就是我所看到的:

system 
    2.0.0-p247 
    2.3.1 
* 2.4.0-dev (set by /Users/johndoe/code/projects/blog-server/.ruby-version) 

隨着Rbenv我指定了我想要的紅寶石版本,我在我的項目的Gemfile中匹配這個。然而,每當我運行bundlebundle exec gem uninstall sinatra我看到上述有關我的ruby版本和我的gemfile ruby​​版本不匹配的錯誤消息。我也看到我的Ruby版本是2.5.0,我不知道如何設置。有人可以幫我解決這個錯誤嗎?

Your Ruby version is 2.5.0, but your Gemfile specified 
2.4.0.pre.dev 

在我的bash的個人資料,我有:

export PATH=$HOME/.rbenv/bin:$PATH 
.... 
eval "$(rbenv init -)" 

總之,我只想運行我的紅寶石過程爲我的博客項目使用Ruby版本2.4.0-dev外殼,和我很努力請參閱瞭解阻止我的方式以及如何解決問題。

更新:

我還注意到一些奇怪的東西。我的捆綁版本繼續指向紅寶石2.5.0p-1

## Environment 


Bundler 1.15.3 
Rubygems 2.6.12 
Ruby  2.5.0p-1 (2017-07-31 revision 59454) [x86_64-darwin16] 
Git  2.11.0 
Platform x86_64-darwin-16 
OpenSSL OpenSSL 1.0.2k 26 Jan 2017 
``` 

## Gemfile 

### Gemfile 

```ruby 
source 'https://rubygems.org' 
ruby '2.4.0-dev' 
gem 'sinatra', '2.0.0' 
``` 

### Gemfile.lock 

``` 
<No /Users/johndoe/code/projects/blog-server/Gemfile.lock found> 
+0

在[本期](https://github.com/bundler/bundler/issues/4260)中有幾個想法在捆綁銷售商回購協議中,你有沒有經歷過那個然而?特別值得注意的是,最後一篇文章提到他需要運行'rbenv rehash'(注意,因爲我看到你在使用rbenv) –

+0

@SimpleLime我熟悉那個線程,沒有任何東西適用於我。每次我卸載bundler並重新安裝時,其Ruby版本仍然是'Ruby 2.5.0p-1'。 – robertjewell

回答

-2

在這裏,我認爲最好的選擇是安裝Ruby版本管理器(rvm)。

RVM通過完全滿足您的需求幫助每一位Ruby開發人員;根據需要自動管理ruby版本。

這是鏈接,希望它有幫助;

https://rvm.io/

乾杯

0

在項目文件夾中運行:

rbenv local 2.4.0-dev

它應該做的伎倆。你只需要爲本特定項目指定本地 ruby​​版本。並且您的全球版本設置爲2.5.0

+0

這沒有奏效。我仍然遇到同樣的問題'你的Ruby版本是2.5.0,但你的Gemfile指定了2.4.0.pre.dev'。看來,我每次運行捆綁程序時,捆綁程序都運行在2.5版本的ruby版本上。0'與我想要的2.4.0.pre.dev。 – robertjewell

+0

@robertjewell有趣的。好的,你可以發佈'rbenv local'和'rbenv global'的輸出嗎? –