【问题标题】:Rails server uses different ruby version than specified by rbenvRails 服务器使用的 ruby​​ 版本与 rbenv 指定的不同
【发布时间】:2021-10-13 05:19:20
【问题描述】:

在我的 rails 项目中,当我尝试运行 rails 服务器时,出现以下错误:

Your Ruby version is 2.7.0, but your Gemfile specified 2.7.2

但是,当我运行 ruby --version 时,我得到:

ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]

另外,rbenv globalrbenv local 都设置为2.7.2

目前,运行 rbenv versions 返回

  • 系统
  • *2.7.2(由 /home/user_name/myProject/my_project/.ruby-version 设置)

我的 Gemfile.lock.ruby-version 文件都指定了 ruby​​ 2.7.2 版本。

另外,在运行服务器时,我收到消息“Bundler (2.1.2) 的运行版本比创建锁定文件 (2.1.4) 的版本旧”,而 bundler 的版本是 Bundler version 2.1.4 .

我不明白为什么任务使用完全不同的 ruby​​ 和 bundler 版本。

【问题讨论】:

  • 你试过bundle exec rails s吗?
  • 错误信息:the running version of Bundler.... 与问题无关,与问题无关。
  • 一个可能的罪魁祸首是您在 ruby​​ 安装之间存在冲突 - 例如。您还安装了系统ruby,或使用了多个版本管理器,例如rvm
  • 我知道这与@TomLord 无关。我想指出的是,使用bundle exec rails s 应该避免系统红宝石并使用 Gemfile 中指定的红宝石。
  • @rdalpra 您从未在问题中提及bundle exec。您刚刚说“运行服务器时”。如果您仅针对 ruby​​ 2.7.2 安装了捆绑程序版本 2.1.2,则该警告仍然可能出现。要解决这个问题,您需要gem update bundler,但就像我上面所说的,我非常怀疑这会对您的核心问题产生影响。

标签: ruby-on-rails ruby rbenv


【解决方案1】:

试试下面的。

gem install bundler:2.1.4
gem update --system

【讨论】:

    【解决方案2】:

    您是否也在使用 bundle 运行您的 rails 服务器?喜欢:

    $ bundle exec rails s
    

    因为 bundle 会使用 Gemfile 中的 gem,而不是尝试全局查找。

    如果你已经在使用bundle exec,返回的是什么:

    $ which ruby
    $ which bundle
    

    【讨论】:

    • $ which ruby 返回 /home/sheriff/.rbenv/shims/ruby 。捆绑包类似。但是$ which rails 正在返回/usr/local/bin/rails。我不确定为什么没有为导轨创建垫片。我试过gem install rails rbenv rehash
    • linux 尝试按照 $PATH 环境变量上的顺序查找二进制文件。看来您已经在全球范围内安装了一次 rails,它安装在 /usr/local/bin/rails 上。尝试在 PATH 上的 /usr/local/bin 之前强制执行 rbenv 二进制文件,方法是在您的 .bashrc 中添加以下行:export PATH=$HOME/.rbenv/bin:$PATHexport PATH="$HOME/.rbenv/shims:$PATH"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 2012-06-12
    相关资源
    最近更新 更多