60

我目前在使用新的 Rails 应用程序时遇到问题,更具体地说:

  • 导轨 5.2.0
  • Ruby 2.5.1p57(2018-03-29 修订版 63029)[x86_64-darwin17]
  • rvm 1.29.4(最新),作者:Michal Papis、Piotr Kuczynski、Wayne E. Seguin [ https://rvm.io]

当我运行时rails c,它会生成一个指向 fileutils gem 的警告链接,如下所示:

`/usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/fileutils.rb:90:` `warning:` `already` initialized constant FileUtils::VERSION
/usr/local/lib/ruby/gems/2.5.0/gems/fileutils-1.1.0/lib/fileutils.rb:92: warning: previous definition of VERSION was here
/usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/fileutils.rb:1188: warning: already initialized constant FileUtils::Entry_::S_IF_DOOR
/usr/local/lib/ruby/gems/2.5.0/gems/fileutils-1.1.0/lib/fileutils.rb:1267: warning: previous definition of S_IF_DOOR was here
/usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/fileutils.rb:1446: warning: already initialized constant FileUtils::Entry_::DIRECTORY_TERM
/usr/local/lib/ruby/gems/2.5.0/gems/fileutils-1.1.0/lib/fileutils.rb:1541: warning: previous definition of DIRECTORY_TERM was here
/usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/fileutils.rb:1448: warning: already initialized constant FileUtils::Entry_::SYSCASE
/usr/local/lib/ruby/gems/2.5.0/gems/fileutils-1.1.0/lib/fileutils.rb:1543: warning: previous definition of SYSCASE was here
/usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/fileutils.rb:1501: warning: already initialized constant FileUtils::OPT_TABLE
/usr/local/lib/ruby/gems/2.5.0/gems/fileutils-1.1.0/lib/fileutils.rb:1596: warning: previous definition of OPT_TABLE was here
/usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/fileutils.rb:1555: warning: already initialized constant FileUtils::LOW_METHODS
/usr/local/lib/ruby/gems/2.5.0/gems/fileutils-1.1.0/lib/fileutils.rb:1650: warning: previous definition of LOW_METHODS was here
/usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/fileutils.rb:1562: warning: already initialized constant FileUtils::METHODS
/usr/local/lib/ruby/gems/2.5.0/gems/fileutils-1.1.0/lib/fileutils.rb:1657: warning: previous definition of METHODS was here

我遵循本指南中概述的所有步骤http://railsapps.github.io/installrubyonrails-mac.html

您可以通过遵循指南或以下步骤来复制问题:

  1. rvm 安装 ruby​​-2.5.1
  2. 轨道新应用
  3. 光盘应用
  4. 宝石更新
  5. 捆绑更新

在观察和解决之后,我发现 Ruby 2.5.* 附带的 fileutils 的默认版本是 1.0.2,并且该gem update命令安装了另一个更新的版本 1.1.0。因此,fileutils当我运行rails c.

为了解决这个问题,我将--default选项附加到gem update命令中。

gem update --default

结果,我得到了两个默认版本,可以通过运行gem list | grep fileutils. 这是我摆脱警告的唯一方法。

mac: gem list | grep fileutils
fileutils (default: 1.1.0, default: 1.0.2)

我写这个问题,有点,回答只是为了与可能遇到同样问题的人分享。我花了几个小时来整理它,因为我在互联网上找不到任何帮助。

注意:当我使用rbenv而不是rvm在 macOS Sierra 上时,会发生同样的问题。

请让我知道是否有人有更好的方法来处理此类问题。

干杯,

4

2 回答 2

107

我遇到过同样的问题。您的帖子中缺少的一步是先卸载 fileutils gem,然后使用默认选项进行 gem 更新。

gem uninstall fileutils
Successfully uninstalled fileutils-1.1.0
gem update fileutils --default
Updating installed gems
Updating fileutils
Fetching: fileutils-1.1.0.gem (100%)
Successfully installed fileutils-1.1.0

这为我摆脱了冗长的 fileutils 消息。

更新:而不是 gem update --default,做gem update fileutils --default。这个过程也适用于其他宝石。感谢 Matijs van Zuijlen。

于 2018-08-09T15:03:28.163 回答
41

这个对我有用:

bundle clean --force

bundle clean(1)
清理 Bundler 目录中未使用的 gem

于 2019-12-23T03:24:05.473 回答