使用rbenv和rails 5.2修复'您的Ruby版本是2.4.4,但您的Gemfile指定2.5.1'错误

问题描述 投票:2回答:2

我知道有很多关于这个的问题有各种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前面的任何命令中

我已经检查了我所知道的所有地方,以及互联网建议我应该看的所有地方,并且找不到将红宝石设置为2.4.4的内容(详见下文)。

所以真正的问题是 - 下一个在哪里寻找rbenvbundler或两者的错误配置文件?

所有这些都给了我正确的红宝石版本

基础:

$ 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-rails ruby bundler rbenv ruby-on-rails-5.2
2个回答
0
投票

你是从项目目录中执行命令ruby -v吗?此外,如果您安装了新的Ruby版本,则还应更新您的捆绑包。 gem install bundlergem update bundler将为您做这件事。


0
投票

游戏有点晚了,但也许这会对某人有所帮助:

TLDR;您可能有一个冲突的版本管理器。

更多背景资料:

我使用thinkbot的笔记本电脑脚本来管理我在计算机上安装的软件。我已经很久没有更新了。我终于更新了,但在更新后发现我的应用程序不再有效。经过相当多的时间花在这个问题的通常建议后,我终于更加关注我收到的实际错误,并注意到对asdf的引用。事实证明asdf是一个通用语言版本管理器,并且脚本已经开始使用它了。在那之前我从未听说过。我读了一些文档,听起来不错,所以我删除了rbenv,做了基本的设置,瞧,我的应用程序再次运行!如果有其他ruby版本管理器,这可能也是相关的。

长话短说,拥有多个版本管理器可能是一个坏主意,这可能导致运行应用程序的各种问题。

© www.soinside.com 2019 - 2024. All rights reserved.