61 votes

Rails 5.2.0 avec la console Ruby 2.5.1 - `warning:``already`` initialized 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 (latest) par Michal Papis, Piotr Kuczynski, Wayne E. Seguin [ [https://rvm.io\]](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 respecte toutes les étapes décrites dans ces lignes directrices. http://railsapps.github.io/installrubyonrails-mac.html .

Vous pouvez reproduire le problème en suivant simplement la ligne directrice ou les étapes suivantes :

  1. rvm install ruby-2.5.1
  2. rails nouvelle application
  3. cd app
  4. mise à jour des pierres précieuses
  5. mise à jour du forfait

Après avoir observé et travaillé, j'ai découvert que la version par défaut de fileutils fournie avec Ruby 2.5.* est la 1.0.2 et que le fichier gem update installe une autre version plus récente, la 1.1.0. Par conséquent, il existe deux versions de fileutils sont chargés lorsque j'exécute le rails c .

Pour résoudre ce problème, j'ajoute --default à l'option gem update commandement.

gem update --default

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

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

J'écris cette question avec, en quelque sorte, une réponse, juste pour la partager avec quelqu'un qui pourrait rencontrer le même problème. J'ai passé des heures à résoudre ce problème car je n'ai trouvé aucune aide sur Internet.

Note rbenv au lieu de rvm sur macOS Sierra.

Veuillez me faire savoir si quelqu'un a une meilleure approche pour traiter un tel problème.

A la vôtre,

108voto

Dan McCallum Points 956

J'ai eu le même problème. La seule étape manquante dans votre post est de désinstaller d'abord la gemme fileutils, puis la gemme update avec l'option par défaut.

gem uninstall fileutils
Successfully uninstalled fileutils-1.1.0
gem update fileutils --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 faire gem update --default, faites gem update fileutils --default . Ce processus devrait fonctionner pour d'autres gemmes également. Merci à Matijs van Zuijlen pour cela.

0 votes

Ça a marché pour moi aussi. Merci !

0 votes

Ça a marché ! Vous pouvez expliquer pourquoi ?

0 votes

Je suppose qu'il y a plusieurs chemins gem qui sont configurés dans votre machine locale. vous pouvez vérifier via gem env. fileutil peut être chargé à partir de plusieurs sources à un moment donné et peut être trié après la réinitialisation ?

46voto

Eduardo Points 115

Ça marche pour moi :

bundle clean --force

bundle clean(1)
Nettoyer les gemmes inutilisées dans votre répertoire Bundler

1 votes

Merci ! La meilleure réponse pour moi !

0 votes

Celui-ci a fonctionné pour moi, pas le précédent

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X