捆绑器使用错误的Ruby版本

时间:2019-03-30 00:28:37

标签: ruby-on-rails ruby bundler rbenv

当我尝试启动Rails服务器时,出现以下错误:

celery -A FacebookAPICall worker --loglevel=info

我不明白为什么会这样,因为我同时使用Homebrew和rbenv将Ruby设置为2.3.8。 2.3.7是系统的ruby版本。我正在使用Mac OS 10.14.4。

$ bundle exec rails s
Your Ruby version is 2.3.7, but your Gemfile specified ~> 2.3.8

我在这里没有看到任何让我觉得应该使用2.3.7的东西。

我不确定还能尝试什么。

Bundler如何决定使用哪个版本的Ruby,以及如何配置它以使用rbenv或我的自制Ruby安装?

5 个答案:

答案 0 :(得分:1)

总结:错误版本的打包程序导致了问题。使用 ruby​​ 版本管理器安装所需的 ruby​​ 版本。然后为您的项目安装正确版本的 bundler gem。

详细信息:就我而言,我正在 github 上运行一个 rails 示例,该示例需要旧版本的 ruby​​ 和 bundler 并得到描述的错误。

为了管理不同的 ruby​​ 版本,我使用了 ruby-installchruby,两者都安装了 homebrew

我按照以下步骤解决了 macOS Catalina v10.15.7 上的问题:

解决步骤

% ruby-install 2.4.1
# open a new shell so chruby will find  2.4.1
% chruby 2.4.1

% which ruby
/Users/richardlogwood/.rubies/ruby-2.4.1/bin/ruby

% gem install bundler:1.16.1
% which bundle
/Users/richardlogwood/.gem/ruby/2.4.1/bin/bundle

% cd (to the rails project directory)

# Note: it's a rails project so there was a binstub 
# for bundler, hence `bin/bundler` in the project directory*

% bin/bundler install
% rake db:{create,migrate}
% bin/rails s

在运行上述步骤之前,错误消息告诉我需要安装哪个版本的 ruby​​ 和 bundler。系统捆绑器是错误的版本(我在 mac 上)并且使用该版本的初始错误消息给了我以下错误。只有在安装了所需的 bundler gem(见上文)后,正确的 ruby​​ 版本才能解析(见上文)。

解决前的错误

% bundle install
Your Ruby version is 2.6.3, but your Gemfile specified 2.4.1
% which ruby
/Users/richardlogwood/.rubies/ruby-2.4.1/bin/ruby
% which bundle
/usr/bin/bundle

请注意,此错误消息指示了所需的捆绑程序版本:

Could not find 'bundler' (1.16.1) required by your ... /Gemfile.lock. (Gem::GemNotFoundException)
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:1.16.1`

答案 1 :(得分:0)

如何安装您的捆绑软件版本? 我会尝试立即重新安装它,直到安装了想要的红宝石版本。

答案 2 :(得分:0)

如何尝试使用“ rvm”?

rvm install 2.4.2

此命令将安装另一个版本的ruby 2.4.2

您只需检查所有版本即可

rvm list

然后,运行以下所需的版本,

rvm <version>rvm use <version>

希望这对您有帮助!

答案 3 :(得分:0)

我不建议使用RVM代替RBEnv。 RBEnv是周围最新的解决方案之一,大多数人都坚持使用它。

能否请您先运行gem update --system来更新捆绑程序。

答案 4 :(得分:0)

安装Rbenv并在项目目录中运行以下命令以安装2.3.8:

rbenv install 2.3.8
rbenv local 2.3.8
bundle install --path=vendor/cache