如何让捆绑器使用由 chruby 和 .ruby-version 设置的 Ruby 版本?

How can I get bundler to use the Ruby version set by chruby and .ruby-version?

我有幸为应用程序搭建了一个开发环境运行 Ruby 1.8.7。不幸的是 bundler 没有使用 chruby.ruby-version 中设置的 Ruby 版本。

此外,我在 Gemfile

中包含了 ruby "1.8.7"

而本地版本是 ruby-1.8.7-p374bundler 环境使用的是 ruby-2.5.0p0

$ ruby -v
ruby 1.8.7 (2013-06-27 patchlevel 374) [i686-darwin17.3.0]

$ bundle env | grep Ruby
Ruby          2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin17]

这会导致以下消息:

$ bundler
Your Ruby version is 2.5.0, but your Gemfile specified 1.8.7

This issue 包含一些有用的评论,但到目前为止我还无法解决问题。由于通过 brew install vim 安装 vim,我确实在 /usr/local/opt 中安装了 Ruby 2.5.0。这将出现在 Ruby 1.8.7 捆绑脚本正在使用的版本中,如下所示:

$ which bundle
/Users/keithpitty/.gem/ruby/1.8.7/bin/bundle

$ head -n1 $(which bundle)
#!/usr/local/opt/ruby/bin/ruby

事实证明这个问题非常令人沮丧。如果有任何建议,我将不胜感激。

您是否提到了您计划使用的 Gemfile 中的 ruby 版本,如果没有尝试在您的 Gemfile 中添加 ruby 版本,请了解更多信息 here.

ruby '~> 2.3.0'

另外,如果您的机器中有多个 ruby 版本,理想情况下您可以使用 RVM or rbenv 来管理多个 Ruby 版本。 (让您的生活更轻松 :))

我通过安装 RubyGems 1.6.2 解决了这个问题。有关更多信息,请参阅

我遵循了这些说明 https://gist.github.com/andrewroycarter/6815905

简而言之,我有一个项目使用 2.5.8,我的本地版本是 2.7.2,所以 bundle install 说

Your Ruby version is 2.7.2, but your Gemfile specified 2.5.8

我所做的是转到我的主目录(或至少离开项目目录),激活 chruby 2.5.8 并安装包 gem

cd
chruby 2.5.8
gem install bundler

现在,当我回到项目目录时,我可以进行捆绑安装。