【问题标题】:Ruby version and project not matchingRuby 版本和项目不匹配
【发布时间】:2018-01-07 05:31:48
【问题描述】:

当我运行时,bundle 我看到以下内容:

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,我指定了我想要的 ruby​​ 版本,我在项目的 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​​ 进程的 shell 使用 ruby​​ 版本 2.4.0-dev,我正在努力了解是什么阻碍了我以及如何解决它。

更新:

我还注意到一些奇怪的事情。我的 bundler 版本继续指向 ruby​​ 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>

【问题讨论】:

  • 在 bundler repo 中的 this issue 中有几个想法,你已经完成了吗?特别值得注意的是,最后一篇文章提到他需要运行rbenv rehash(仅值得注意,因为我看到你正在使用 rbenv)
  • @SimpleLime 我对那个线程很熟悉,但没有什么对我有用。每次我卸载 bundler 并重新安装它时,它的 Ruby 版本仍然是Ruby 2.5.0p-1

标签: ruby sinatra bundler rbenv


【解决方案1】:

在项目文件夹中运行:

rbenv local 2.4.0-dev

它应该可以解决问题。您只需要为这个特定项目指定 local ruby​​ 版本。而你的全局版本设置为2.5.0

【讨论】:

  • 这不起作用。我仍然遇到同样的问题Your Ruby version is 2.5.0, but your Gemfile specified 2.4.0.pre.dev。似乎每次我运行 bundler 时,bundler 都会使用 ruby​​ 版本运行,2.5.0 vs 我想要的 2.4.0.pre.dev。
  • @robertjewell 很有趣。好的,请您发布rbenv localrbenv global 的输出吗?
【解决方案2】:

我认为最好的选择是安装 Ruby 版本管理器 (rvm)。

RVM 帮助每个 ruby​​ 开发人员做你需要的事情;根据需要自动管理 ruby​​ 版本。

这是链接,希望对你有帮助;

https://rvm.io/

干杯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 2021-09-21
    相关资源
    最近更新 更多