J'ai une application Rails 6 api uniquement que je ne parviens pas à exécuter sur AWS Elastic Beanstalk. Après le déploiement de cette application, puma reste avec le message "Arrêt anticipé du travailleur". Je ne le fais pas n'ont pas de configurations ni de paramètres personnalisés pour ce projet. Il suffit de créer un environnement et de télécharger un fichier Zip archivé.
Après avoir tué les processus puma avec la commande pkill -9 -f puma
mon fichier puma.log ressemble à ci-dessous:
=== puma startup: 2020-01-22 13:17:45 +0000 ===
=== puma startup: 2020-01-22 13:17:45 +0000 ===
[28858] Early termination of worker
[28856] Early termination of worker
[28862] Early termination of worker
[28865] Early termination of worker
[28869] Early termination of worker
J'ai cherché cette erreur et je n'ai rien trouvé à résoudre.
J'utilise Puma avec Ruby 2.6 fonctionnant sur Amazon Linux 64 bits/2.11.2 sur AWS.
Rencontré la même erreur. Il s'avère que c'est un PATCH différent de puma.
J'utilisais cette pile de haricots élastiques
Ruby 2.6 AL2 version 3.0.1
64bit Amazon Linux 2 v3.0.1 running Ruby 2.6
Ruby 2.6.6-p146
RubyGems 3.1.2
Puma 4.3.3
...
Gemfile
de mon projet comprenait puma
de cette façon.
gem 'puma', '~> 4.3.3'
Mon projet était un passe-partout pour les nouveaux projets qui venaient à moi, donc les choses fonctionnaient bien pour les "anciens" projets jusqu'à ce que la nouvelle version du patch, puma 4.3.5 à partir de maintenant, soit sortie.
La solution est de corriger la version du gem dans le Gemfile en tant que telle:
gem 'puma', '= 4.3.3'
La leçon apprise est de toujours faire correspondre votre environnement à celui de votre outil de déploiement. Gardez une trace des dernières versions de la pile de solutions ici .
J'ai oublié de parler de la structure de mon projet. J'ai un répertoire appelé overrides sous app/folder.
Enfin, j'ai trouvé dans ce dossier app/overrides que puma crash peut-être lié à ce problème: Comment ignorer un dossier dans Zeitwerk pour Rails 6?
Après avoir changé mon fichier environment.rb en ignorant le dossier app/overrides, mon projet a commencé à fonctionner correctement.