Rails 5.2.0 с консолью Ruby 2.5.1 - "предупреждение:" уже инициализирована константа FileUtils :: VERSION

В настоящее время я испытываю проблему с моим новым приложением rails, а именно:

  • Rails 5.2.0
  • Ruby 2.5.1p57 (2018-03-29 версия 63029) [x86_64-darwin17]
  • rvm 1.29.4 (последнее) Михал Папис, Петр Кучинский, Уэйн Э. Сегин [ 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. reils новое приложение
  3. приложение cd
  4. обновление gem
  5. обновление пакета

После наблюдения и работы, я обнаружил, что версия fileutils по умолчанию поставляется с Ruby 2.5. * 1.0.2, а команда gem update устанавливает другую более новую версию 1.1.0. Поэтому при запуске rails c загружаются две версии fileutils.

Чтобы решить эту проблему, я добавляю параметр --default в команду gem update.

gem update --default

В результате у меня появились две версии по умолчанию, которые можно увидеть, запустив gem list | grep fileutils gem list | grep fileutils. Это единственный способ избавиться от предупреждения.

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

Я пишу этот вопрос, вроде, отвечаю только за то, чтобы поделиться с кем-то, кто может испытать ту же проблему. Я потратил несколько часов, чтобы разобраться с этим, так как я не мог найти помощь в Интернете.

Примечание: та же проблема возникает, когда я использую rbenv вместо rvm для macOS Sierra.

Пожалуйста, дайте мне знать, если у кого-то есть лучший подход к решению такой проблемы.

Ура,

Ответы

Ответ 1

Я была такая же проблема. Единственный шаг, отсутствующий в вашем посте, - сначала удалить gem fileutils, а затем обновить 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 --default выполните обновление файла gemutils --default. Этот процесс должен работать и для других драгоценных камней. Спасибо Matijs van Zuijlen за это.