ruby-on-rails - 使用 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 -v
您是否从项目目录中执行命令?此外,如果您安装了新的 Ruby 版本,您也应该更新您的捆绑器。gem install bundler
或者gem update bundler
会为你做这件事。
推荐阅读
- asp.net-core - Net Core 3.0 文件上传不起作用,但在 Net Core 2.2 中运行良好
- javascript - InversifyJS @multiInject 不起作用,抛出错误“为 serviceIdentifier 找到不明确的匹配”
- python - TensorRT- 不支持的操作 _Fill
- cypress - 赛普拉斯:为什么我需要在每次测试之前运行 cy.wait(0)?
- c# - 如何根据其文本制作按钮的 Onclick?
- plugins - 在刻度中添加符号时出现问题(括号插件)
- unity3d - 如何在我的项目中使用 2d-extras zip 文件?(或任何其他外部统一下载)
- python - 如何更改假设生成的最大测试用例数?
- javascript - 根据显示的单词更改文本的颜色
- javascript - 悬停时我怎么能做很多元素做同样的事情?