web-dev-qa-db-fra.com

Rails 5.2.0 avec Ruby Console 2.5.1 - `warning:` constant` déjà constant FileUtils :: VERSION

Je rencontre actuellement un problème avec ma nouvelle application Rails, plus précisément:

  • Rails 5.2.0
  • Ruby 2.5.1p57 (2018-03-29 révision 63029) [x86_64-darwin17]
  • rvm 1.29.4 (dernière) de Michal Papis, Piotr Kuczynski, Wayne E. Seguin [ https://rvm.io]

Quand je cours Rails c, il produit un lien d’avertissement vers Fileutils gem comme suit:

`/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

Je suis toutes les étapes décrites dans cette directive http://railsapps.github.io/installrubyonrails-mac.html.

Vous pouvez reproduire le problème en suivant simplement les instructions ou en procédant comme suit:

  1. rvm installer Ruby-2.5.1
  2. Rails nouvelle application
  3. cd app
  4. gem mise à jour
  5. mise à jour du paquet

Après avoir observé et travaillé, j’ai trouvé que la version par défaut de fileutils est livrée avec Ruby 2.5. * Est 1.0.2 et le gem update _ commande installe une autre version plus récente 1.1.0. Par conséquent, il y a deux versions de fileutils qui sont chargées lorsque je lance le Rails c.

Pour résoudre ce problème, j’ajoute --default option à la gem update commande.

gem update --default

En conséquence, j’ai eu deux versions par défaut qui peuvent être vues en exécutant gem list | grep fileutils. C’est le seul moyen de me débarrasser de cet avertissement.

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

J'écris cette question avec, genre de, répondez juste pour partager avec quelqu'un qui peut rencontrer le même problème. J'ai passé des heures à régler ce problème car je ne trouvais aucune aide sur Internet.

Remarque: le même problème se produit lorsque j'utilise rbenv au lieu de rvm. sur macOS Sierra.

S'il vous plaît laissez-moi savoir si quelqu'un a une meilleure approche pour traiter un tel problème.

À votre santé,

34
Veasna

J'ai eu le même problème. La première étape qui manque à votre publication consiste à désinstaller d’abord le gem fileutils, puis à le mettre à jour avec l’option par défaut.

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

Cela m'a débarrassé des messages verbeux de Fileutils.

Mise à jour: Au lieu de gem update --default, faites gem update fileutils --default. Ce processus devrait également fonctionner pour d'autres joyaux. Merci à Matijs van Zuijlen pour cela.

70
Dan McCallum