首页 > 解决方案 > 使用 rbenv 和 rails 5.2 修复“您的 Ruby 版本是 2.4.4,但您的 Gemfile 指定 2.5.1”错误

问题描述

我知道各种 ruby​​ 版本对此有很多问题。我相信我已经用尽了所有正常的修复(通常有效)。

这是一个一直在工作的应用程序,在我现在几个月(以及其他人之前几年)的相同环境中。它以前曾与 ruby​​ 2.4.4 和 ruby​​ 2.5.1 一起使用(使用 rbenv 切换)。

我想要 ruby​​ 2.5.1 并且 bundler 抱怨我的 ruby​​ 版本是 2.4.4

$ bundle exec rspec
Your Ruby version is 2.4.4, but your Gemfile specified 2.5.1

$ rbenv exec bundle exec rspec
Your Ruby version is 2.4.4, but your Gemfile specified 2.5.1

注意:rspec是示例,但它发生在任何前面的命令bundle exec

我检查了所有我知道的地方,以及互联网建议我应该查看的所有地方,但找不到将 ruby​​ 设置为 2.4.4 的内容(请参阅下面的详细信息)。

所以真正的问题是——下一个地方在哪里寻找错误配置的文件,rbenv或者bundler两者都有?

所有这些都给了我正确的 ruby​​ 版本

基础知识:

$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

$ which ruby
/home/vagrant/.rbenv/shims/ruby

$ rbenv which ruby
/home/vagrant/.rbenv/versions/2.5.1/bin/ruby

$ bundle -v
Bundler version 1.16.3

$ which bundle
/home/vagrant/.rbenv/shims/bundle

$ rbenv which bundle
/home/vagrant/.rbenv/versions/2.5.1/bin/bundle

$ bundle platform --ruby
ruby 2.5.1p57

$ rbenv version
2.5.1 (set by /path/to/app/.ruby-version)

$ rbenv local
2.5.1

$ rbenv global
2.5.1

$ head Gemfile -n 6
source 'https://rubygems.org'
git_source(:github) { |name| "https://github.com/#{name}.git" }

ruby '2.5.1'

gem 'rails', '~> 5.2.0'

$ tail Gemfile.lock -n 5
RUBY VERSION
   ruby 2.5.1p57

BUNDLED WITH
   1.16.3

捆绑环境

$ bundle env

## Environment

```
Bundler       1.16.3
  Platforms   ruby, x86_64-linux
Ruby          2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
  Full Path   /home/vagrant/.rbenv/versions/2.5.1/bin/ruby
  Config Dir  /home/vagrant/.rbenv/versions/2.5.1/etc
RubyGems      2.7.6
  Gem Home    /home/vagrant/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0
  Gem Path    /home/vagrant/.gem/ruby/2.5.0:/home/vagrant/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0
  User Path   /home/vagrant/.gem/ruby/2.5.0
  Bin Dir     /home/vagrant/.rbenv/versions/2.5.1/bin
Tools
  Git         1.9.1
  RVM         not installed
  rbenv       rbenv 1.1.1-37-g1c772d5

  chruby      not installed
```

## Bundler Build Metadata

```
Built At          2018-07-17
Git SHA           12e73cab7
Released Version  true
```

... (snip)

RUBY VERSION
   ruby 2.5.1p57

BUNDLED WITH
   1.16.3

宝石环境

RubyGems Environment:
  - RUBYGEMS VERSION: 2.7.6
  - RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/vagrant/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0
  - USER INSTALLATION DIRECTORY: /home/vagrant/.gem/ruby/2.5.0
  - RUBY EXECUTABLE: /home/vagrant/.rbenv/versions/2.5.1/bin/ruby
  - EXECUTABLE DIRECTORY: /home/vagrant/.rbenv/versions/2.5.1/bin
  - SPEC CACHE DIRECTORY: /home/vagrant/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /home/vagrant/.rbenv/versions/2.5.1/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /home/vagrant/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0
     - /home/vagrant/.gem/ruby/2.5.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/vagrant/.rbenv/versions/2.5.1/bin
     - /home/vagrant/.rbenv/libexec
     - /home/vagrant/.rbenv/plugins/ruby-build/bin
     - /home/vagrant/.rbenv/shims
     - /home/vagrant/.rbenv/shims
     - /home/vagrant/.rbenv/shims
     - /home/vagrant/.rbenv/bin
     - /home/vagrant/.rbenv/shims
     - /home/vagrant/.rbenv/bin

$ cat /home/vagrant/.rbenv/versions/2.5.1/bin/bundler
#!/home/vagrant/.rbenv/versions/2.5.1/bin/ruby
#
# This file was generated by RubyGems.
#
# The application 'bundler' is installed as part of a gem, and
# this file is here to facilitate running it.
#

require 'rubygems'

version = ">= 0.a"

if ARGV.first
  str = ARGV.first
  str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
  if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then
    version = $1
    ARGV.shift
  end
end

if Gem.respond_to?(:activate_bin_path)
load Gem.activate_bin_path('bundler', 'bundler', version)
else
gem "bundler", version
load Gem.bin_path("bundler", "bundler", version)
end

标签: ruby-on-railsrubybundlerrbenvruby-on-rails-5.2

解决方案


ruby -v您是否从项目目录中执行命令?此外,如果您安装了新的 Ruby 版本,您也应该更新您的捆绑器。gem install bundler或者gem update bundler会为你做这件事。


推荐阅读