我的新Rails应用程序目前遇到问题,更具体地说:
当我运行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
中概述的所有步骤。
您可以按照指南或执行以下步骤来复制问题:
观察并解决后,我发现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)
我写这个问题的答案只是为了与可能遇到相同问题的人分享。由于无法在互联网上找到任何帮助,我花了几个小时对其进行整理。
注意 :当我在macOS Sierra上使用rbenv
而不是rvm
时,会发生相同的问题。
请让我知道是否有人有更好的方法来处理此类问题。
干杯
答案 0 :(得分:64)
我有同样的问题。帖子中缺少的一个步骤是先卸载fileutils gem,然后使用默认选项更新gem。
gem uninstall fileutils
Successfully uninstalled fileutils-1.1.0
gem update --default
Updating installed gems
Updating fileutils
Fetching: fileutils-1.1.0.gem (100%)
Successfully installed fileutils-1.1.0
这为我摆脱了冗长的fileutils消息。
答案 1 :(得分:1)
它对我有用:
bundle clean --force
捆绑清洁(1)
清理Bundler目录中未使用的宝石