繁体   English   中英

mac 上有两个不同的 ruby​​ 版本?

[英]Two different ruby versions on mac?

我正在本地设置一个简单的 ruby​​ on rails 应用程序。 看来我在 mac 上有两个不同版本的 ruby​​,我只想使用一个。 当我运行bundle install ,它说Your Ruby version is 2.7.1, but your Gemfile specified 2.6.3 然后,我将 gemfile 中的行ruby '2.6.3'更改为ruby '2.7.1' 有了这个,它可以正确运行bundle install 但是,当我运行rails server它说Your Ruby version is 2.6.3, but your Gemfile specified 2.7.1

为什么我的 Ruby 版本有两个不同的值? 我如何让它只使用一个版本的 Ruby?

如果相关,我在 mac 上并使用自制软件安装了 ruby​​。 如果我在终端中运行ruby -v ,它会显示ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19] 我不确定为什么它说我有 ruby​​ 2.6.3。

有不同的版本,因为 Mac OSX 已经默认包含一个用于系统脚本 (2.6) 的版本。 Homebrew 安装另一个永远不会覆盖或重新放置系统范围版本的软件。

您正在寻找“ Ruby 版本管理器”,该工具允许您安装和使用不同版本的 Ruby,甚至每个项目。

流行的是 RVM 和 rbenv。 就我个人而言,我选择rbenv ,我认为这是两者中使用最广泛的。 使用示例:

# Install ruby 2.7
rbenv install 2.7.1

# Make ruby 2.7 the default version
$ rbenv global 2.7.1

# Or make 2.7 the default versión only on a specific project
$ cd myproject
$ rbenv local 2.7.1
# this create a ".ruby-version" file

该网页始终提供最新且易于使用的 Ruby 环境设置教程,具体取决于操作系统和版本。

https://gorails.com/setup/osx/10.15-catalina#overview

您安装了两个不同版本的 Ruby,因为 MacOS 自带标准安装的 Ruby。

您还有指向 Ruby 系统版本的rails 该版本通常在/usr/bin/ruby Ruby 的 Homebrew 安装版本(这是你想要的)位于/usr/local/bin/ruby除非你指定了一个完全不同的根路径来安装你的 brew 包。

运行brew config将为您提供有关 Homebrew 配置的简短数据列表。 其中有一个名为HOMEBREW_PREFIX的环境变量,它应该如下所示:

$ brew config
....
HOMEBREW_PREFIX: /usr/local
....

我建议首先将/usr/local/bin放在您的PATH环境变量中,以便您可以通过 CLI 轻松使用您的 brew 包:

export PATH="/usr/local/bin:$PATH"

您可能还想考虑为您使用的任何 shell 设置以下环境变量(给出的示例):

  • RUBY_ENGINE=ruby
  • RUBY_VERSION=2.7.1
  • GEM_ROOT=/usr/local/etc/ruby-2.7.1/lib/ruby/gems/2.7.1GEM_HOME别名)

gem env提供了很多关于如何配置 Gems 的重要信息。

我遇到了这个确切的问题,并通过运行以下命令设法解决了这个问题:

CFLAGS="-Wno-error=implicit-function-declaration" rbenv install 2.6.7

注意 - 我需要那个版本 (2.6.7) 请将其更改为您需要的版本

我在这篇博客文章中找到了这个 - https://dev.to/rbazinet/fix-installation-of-ruby-using-rbenv-on-macos-big-sur-3432

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM