如何在每个项目的基础上使用系统 Ruby 而不是 rbenv?

How to use system Ruby instead of rbenv on a per-project basis?

我正在使用我的工作笔记本电脑为非工作开源项目做贡献。在工作中,我们使用 rbenv 来管理 Ruby 版本,但开源项目似乎期望 gem 依赖项位于系统 Ruby 安装文件夹中。因此,当我尝试 运行 某些项目的命令时,我 运行 会遗漏 gem 个错误。

项目是 Homebrew,我 运行ning 的命令是 brew style。当我在本地 运行 命令时,我得到以下信息:

Ignoring rainbow-2.2.2 because its extensions are not built.  Try: gem pristine rainbow --version 2.2.2
/usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- rainbow (LoadError)
from /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/richie.thomas/.gem/ruby/2.3.0/gems/rubocop-0.50.0/lib/rubocop.rb:4:in `<top (required)>'
from /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/richie.thomas/.gem/ruby/2.3.0/gems/rubocop-0.50.0/bin/rubocop:6:in `<top (required)>'
from /Users/richie.thomas/.gem/ruby/2.3.0/bin/rubocop:22:in `load'
from /Users/richie.thomas/.gem/ruby/2.3.0/bin/rubocop:22:in `<main>'

运行 gem environment returns 以下内容:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.6.10
  - RUBY VERSION: 2.3.3 (2016-11-21 patchlevel 222) [x86_64-darwin15]
  - INSTALLATION DIRECTORY: /Users/richie.thomas/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0
  - USER INSTALLATION DIRECTORY: /Users/richie.thomas/.gem/ruby/2.3.0
  - RUBY EXECUTABLE: /Users/richie.thomas/.rbenv/versions/2.3.3/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/richie.thomas/.rbenv/versions/2.3.3/bin
  - SPEC CACHE DIRECTORY: /Users/richie.thomas/.gem/specs
....

其他贡献者告诉我,最简单的方法是禁用或卸载 rbenv 以 运行 命令。我真的很想避免每次我想 运行 这个命令时卸载和重新安装 rbenv,但是 rbenv documentation 中没有提到这个。

有没有我可以运行的一次性命令,或者我可以更改的任何配置设置,以便我可以做我需要做的事情?

我重新运行 gem environment 并注意到定义了以下环境变量:

INSTALLATION DIRECTORY: /Users/richie.thomas/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0
USER INSTALLATION DIRECTORY: /Users/richie.thomas/.gem/ruby/2.3.0

INSTALLATION DIRECTORY 的值是我期望用于 运行 命令的值,我注意到 USER INSTALLATION DIRECTORY 的值是错误堆栈跟踪中显示的值。

由于我无法弄清楚我的机器是如何确定要使用哪个变量的,我只是将 ~/.gem/ 重命名为 ~/.gem2/ 并重新 运行 brew style我原本想要的命令。成功了!