web-dev-qa-db-ja.com

Rails 5.2.0 with Ruby 2.5.1 console-`warning:` `already`初期定数FileUtils :: VERSION

現在、新しいRailsアプリケーションで問題が発生しています。具体的には:

  • Rails 5.2.0
  • Ruby 2.5.1p57(2018-03-29リビジョン63029)[x86_64-darwin17]
  • rvm 1.29.4(最新)by 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 install Ruby-2.5.1
  2. Railsの新しいアプリ
  3. cdアプリ
  4. 宝石の更新
  5. バンドル更新

観察して対処した後、fileutilsのデフォルトバージョンにはRuby 2.5。*が付属しており、gem updateコマンドで別の新しいバージョン1.1.0がインストールされることがわかりました。したがって、Rails cを実行すると、fileutilsの2つのバージョンがロードされます。

この問題に対処するために、--defaultオプションをgem updateコマンドに追加します。

gem update --default

その結果、gem list | grep fileutilsを実行することで確認できる2つのデフォルトバージョンを取得しました。これは、警告を取り除くことができる唯一の方法です。

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

この質問は、同じ問題が発生する可能性のある人と共有するために、一種の回答で書きます。インターネットでヘルプが見つからなかったので、整理に数時間を費やしました。

:macOS Sierraでrbenvの代わりにrvmを使用すると、同じ問題が発生します。

誰かがそのような問題に対処するためのより良いアプローチを持っているかどうか教えてください。

乾杯、

34
Veasna

同じ問題がありました。投稿にない1つのステップは、最初に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メッセージが削除されました。

更新: gem update --defaultの代わりにgem update fileutils --defaultを実行します。このプロセスは、他のgemでも機能するはずです。これについてMatijs van Zuijlenに感謝します。

70
Dan McCallum