2020.10.10 J'ai apporté une correction au commentaire.
Ruby 2.5.7 Rails 5.2.4
gem gem 'rspec-rails', '~> 3.6'
Lorsque j'ai écrit le code de test dans RSpec et l'ai exécuté, j'ai eu l'erreur suivante.
$ rspec spec/models/tag_spec.rb
WARN: Unresolved specs during Gem::Specification.reset:
diff-lcs (< 2.0, >= 1.2.0)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
Ce n'était pas exactement une erreur, cela semblait être averti car il y avait plusieurs versions du même joyau et le test lui-même s'est déroulé avec succès. Cependant, je ne peux pas le laisser seul, alors je vais le résoudre.
Je me suis référé à cet article pour la solution. Qiita --Correspondence when WARN: Effacement des spécifications non résolues. Apparaît dans Ruby gem
Commençons par vérifier la gemme en question.
$ diff-lcs (< 2.0, >= 1.2.0)
Il a été souligné qu'il existe plusieurs versions de la gemme appelée diff-lcs
, mais je ne me souviens pas d'avoir installé cette gemme moi-même, donc bien sûr, elle n'est pas mentionnée dans le Gemfile.
Ensuite, lors de l'installation d'un gem, le bundler peut l'avoir automatiquement installé en tant que gem dépendant, donc si vous cochez Gemfile.lock
, vous pouvez voir que` diff-lcs (1.4) autre que la dépendance gem de rspec. Il y avait .4) ».
Il y a deux gemmes dépendantes installées avec rspec, qui sont toutes deux comme diff-lcs (> = 1.2.0, <2.0)
, et la version n'est pas écrite, donc la version de cette gemme est la suivante Je vais enquêter avec une commande.
$ gem list -a | grep diff-lcs
diff-lcs (1.4.4, 1.4.2, 1.3)
À la suite de l'enquête, il semble que «(1.4.4, 1.4.2, 1.3)» 3 versions sont installées. Le "diff-lsc (1.4.4)" non dépendant est le dernier de ceux-ci, donc nous allons faire correspondre les deux autres qui dépendent de rspec à cette version.
Une chose à noter ici est que si vous installez une gemme qui dépend du bundler, et si vous changez facilement la version de la gemme dépendante, d'autres gemmes qui en dépendent peuvent mal fonctionner.
Dans ce cas, la version de diff-lcs (<2.0,> = 1.2.0)
, qui dépend de rspec, a été écrite comme "1.2.0 ou plus, moins de 2.0", donc c'est la dernière (en ce moment). J'en suis venu à la conclusion qu'il n'y a pas de problème même si je mets à jour la version 1.4.4.
Ensuite, exécutez la commande écrite sur le site de référence.
$ gem cleanup
Et
$ bundle install
Le texte d'avertissement a maintenant disparu.
Je vais extraire de ce commentaire.
$ bundle exec rspec (Spécification du fichier d'exécution)
Lorsque vous le faites, le bundler reconnaîtra automatiquement les dépendances décrites dans le Gemfile.
Lorsque la dépendance devient compliquée et que plusieurs versions sont absolument nécessaires, cette méthode est le seul moyen car elle ne peut pas être combinée dans la dernière version mentionnée ci-dessus.
Dans mon cas, il y avait un autre message d'avertissement, alors veuillez lire l'article suivant à ce sujet ヽ (; ▽ ;) ノ Qiita- [Ruby on Rails] Je reçois un avertissement lors de l'exécution de RSpec car gem'chromedriver-helper 'est obsolète.
Si vous avez des questions, des différences d'interprétation ou si vous pensez que quelque chose ne va pas avec la méthode de description, nous vous serions reconnaissants de bien vouloir le signaler dans les commentaires.
Merci d'avoir lu jusqu'au bout.
J'ai publié le fichier que j'utilise actuellement sur mon GitHub, alors j'espère que vous pourrez vous y référer également! GitHub - MasaoSasaki/matchi
Autre Qiita --Correspondence when WARN: Effacement des spécifications non résolues. Apparaît dans Ruby gem YoheiIsokawa- [Rails] Comment écrire la spécification de version de Gemfile
Recommended Posts