Une erreur s'est produite lors de la création de l'environnement avec docker et de l'ajout de gemmes. Je partagerai des informations sous forme de mémorandum!
docker rails (5.2.0) ruby (2.7.1) mysql (5.7) nginx puma
Lorsque j'ai ajouté le joyau de devise dans le Gemfile et ** docker-compose run --rm rails bundle install **, l'erreur suivante s'est produite
~ RailsApp % docker-compose run --rm rails bundle install
Starting railsapp_db_1 ... done
Fetching gem metadata from https://rubygems.org/.............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies....
Bundler could not find compatible versions for gem "railties":
In snapshot (Gemfile.lock):
railties (= 5.2.4.3)
In Gemfile:
devise (= 4.1.0) was resolved to 4.1.0, which depends on
railties (< 5.1, >= 4.1.0)
rails (~> 5.2.2) was resolved to 5.2.4.3, which depends on
railties (= 5.2.4.3)
Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
Je ne savais pas quelle en était la cause, mais pour le moment, il disait: «** la mise à jour du bundle ** peut le résoudre. ** exécuter docker-compose run --rm rails bundle update **
↓↓↓↓↓↓↓↓
~ RailsApp % docker-compose run --rm rails bundle update
Starting railsapp_db_1 ... done
Fetching gem metadata from https://rubygems.org/.............
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...........................
Bundler could not find compatible versions for gem "railties":
In snapshot (Gemfile.lock):
railties (= 5.2.4.3)
In Gemfile:
devise (= 4.1.0) was resolved to 4.1.0, which depends on
railties (< 5.1, >= 4.1.0)
rails (~> 5.2.2) was resolved to 5.2.4.3, which depends on
railties (= 5.2.4.3)
Ça n'a pas marché ...
D'après la conclusion, il semble que la cause de l'erreur était que le joyau ** ne figurait pas dans la liste. ** **
J'ai fait référence à l'article suivant.
https://qiita.com/hatorijobs/items/2928e152f22d009b07d0
Si vous exécutez cet article tel quel, il sera résolu, mais si vous travaillez avec docker, il existe des commandes C'est différent, je vais donc l'expliquer ici.
Opérez dans l'ordre suivant.
1. docker-compose exec [Nom de service arbitraire]Vérifiez la liste des pierres précieuses avec la liste des pierres précieuses et assurez-vous qu'il n'y a pas de pierres précieuses.
2. docker-compose exec [Nom de service arbitraire]Installez le dispositif avec le dispositif d'installation gem.
3.Docker à nouveau-compose exec [Tout nom de service]Vérifiez la liste des gemmes avec la liste des gemmes et inventez(4.7.2)Assurez-vous qu'il y en a.
4.Dans Gemfile**gem 'devise','4.7.2'Décris
5. docker-compose run --Exécuter la mise à jour du bundle RM Rails
Regardons-les dans l'ordre. ↓↓↓↓↓↓↓↓
** 1. docker-compose exec [nom de service arbitraire] Vérifiez la liste des gemmes avec la liste des gemmes et confirmez qu'il n'y a pas de gemme de devise. ** **
~ RailsApp % docker-compose exec app gem list
*** LOCAL GEMS ***
actioncable (5.2.4.3, 5.2.2)
actionmailer (5.2.4.3, 5.2.2)
actionpack (5.2.4.3, 5.2.2)
actionview (5.2.4.3, 5.2.2)
actionjob (5.2.4.3, 5.2.2)
~réduction~
web-console (3.7.0)
** 2. docker-compose exec [nom de service arbitraire] Installez le dispositif avec le dispositif d'installation gem. ** **
~ RailsApp % docker-compose exec app gem install devise
Fetching warden-1.2.8.gem
Fetching bcrypt-3.1.13.gem
~réduction~
Successfully installed devise-4.7.2
5 gems installed
** 3. Vérifiez à nouveau la liste des gemmes avec la liste de gemmes docker-compose exec [nom de service arbitraire] et confirmez que le dispositif (4.7.2) existe. ** **
~ RailsApp % docker-compose exec app gem list
*** LOCAL GEMS ***
actioncable (5.2.4.3, 5.2.2)
actionmailer (5.2.4.3, 5.2.2)
actionpack (5.2.4.3, 5.2.2)
actionview (5.2.4.3, 5.2.2)
actionjob (5.2.4.3, 5.2.2)
~réduction~
devise (4.7.2)
~réduction~
web-console (3.7.0)
** 4. Écrivez gem'devise ',' 4.7.2 'dans Gemfile **
Gemfile.
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.0', '>= 5.0.2.1'
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.3.18', '< 0.5'
# Use Puma as the app server
~réduction~
#Ajout de la fonction de connexion
gem 'devise','4.7.2'
~réduction~
** 5. Exécutez docker-compose run --rm rails bundle update **
~ RailsApp % docker-compose run --rm rails bundle update
S'il n'y a pas d'erreur, nous gagnons
J'ai remarqué certaines choses en traitant des erreurs, je vais donc les partager.
docker-Exécutez composer exec app gem install dispositif pour installer la dernière version de gem.
Nous avons décidé qu'il n'y avait pas de problème avec la dernière version, nous avons donc omis l'explication sur la façon de spécifier la version.
* Si vous savez comment faire, faites-le moi savoir!
En passant, j'ai trouvé un site où toute l'historique des versions de l'appareil est publiée, je vais donc lier l'URL. https://rubygems.org/gems/devise/versions
[Tout nom de service]Qu'est-ce que docker-compose.Il s'agit du nom de service spécifié par yml.
Cela peut être décidé de manière arbitraire, mais il semble que de nombreuses personnes l'utilisent sur le Web, comme db ou une application, sur n'importe quel site.
En ce qui concerne les rails et le docker, je continuerai à publier régulièrement des articles sur les erreurs pour la sortie. De plus, je pense qu'il y avait certains points que je n'ai pas pu atteindre dans mon premier post, mais merci d'avoir lu jusqu'au bout! !! !!
c'est tout
Recommended Posts