かすみん日記

暇なときに何か喋ります

【Ruby】warning: already initialized constant

jekyll server でなんか警告が出るようになっちゃったときの備忘録。

環境

% ruby -v
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-darwin20]

% rbenv -v
rbenv 1.1.2

% gem -v
3.0.3

% bundle -v
Bundler version 2.2.20

% jekyll -v
jekyll 4.2.0

症状

gem install したときに、なんかconflictしてるけど上書きしてもええか?と聞かれてyesと言ってしまったら、警告が出るようになってしまった;

% jekyll server
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/2.6.0/fileutils/version.rb:4: warning: already initialized constant FileUtils::VERSION
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fileutils-1.5.0/lib/fileutils.rb:105: warning: previous definition of VERSION was here
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/2.6.0/fileutils.rb:1267: warning: already initialized constant FileUtils::Entry_::S_IF_DOOR
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fileutils-1.5.0/lib/fileutils.rb:1284: warning: previous definition of S_IF_DOOR was here
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/2.6.0/fileutils.rb:1540: warning: already initialized constant FileUtils::Entry_::DIRECTORY_TERM
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fileutils-1.5.0/lib/fileutils.rb:1577: warning: previous definition of DIRECTORY_TERM was here
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/2.6.0/fileutils.rb:1595: warning: already initialized constant FileUtils::OPT_TABLE
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fileutils-1.5.0/lib/fileutils.rb:1635: warning: previous definition of OPT_TABLE was here
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/2.6.0/fileutils.rb:1649: warning: already initialized constant FileUtils::LOW_METHODS
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fileutils-1.5.0/lib/fileutils.rb:1694: warning: previous definition of LOW_METHODS was here
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/2.6.0/fileutils.rb:1656: warning: already initialized constant FileUtils::METHODS
/Users/<name>/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/fileutils-1.5.0/lib/fileutils.rb:1701: warning: previous definition of METHODS was here
...

対応

該当gemをアンインストールすればいいらしい;

% gem uninstall fileutils
Successfully uninstalled fileutils-1.5.0

その後アップデート;

% gem update --default
Updating installed gems
Updating fileutils
Fetching fileutils-1.5.0.gem
Successfully installed fileutils-1.5.0
Done installing documentation for fileutils after 0 seconds
Done installing documentation for fileutils after 0 seconds
Updating mimemagic
Successfully installed mimemagic-0.4.3
Done installing documentation for mimemagic after 0 seconds
Done installing documentation for mimemagic after 0 seconds
Gems updated: fileutils mimemagic

他にもいくつかのgemで同様の警告が出ていたので、全てアンインストール;

gem uninstall logger
gem uninstall etc
gem uninstall strscan
gem uninstall forwardable

gem update --default

これでもう警告は出なくなった。

参考

stackoverflow.com

github.com