我目前在新的 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] https://rvm.io%5D
当我跑步时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
.
您只需遵循指南或执行以下步骤即可重现该问题:
- rvm 安装 ruby-2.5.1
- 铁路新应用程序
- cd app
- 宝石更新
- 捆绑更新
经过观察和解决之后,我发现 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)
我写这个问题的答案只是为了与可能遇到同样问题的人分享。我花了几个小时来整理它,因为我在互联网上找不到任何帮助。
Note: 我使用的时候也出现同样的问题rbenv
代替rvm
在 macOS Sierra 上。
如果有人有更好的方法来处理此类问题,请告诉我。
Cheers,