Impossible de mettre à jour Ruby, donc ./launcher rebuild app continue d'échouer

Salut,

J’ai récemment migré une image de serveur sur laquelle Discourse avec Docker est installé.

Je parviens à tout faire fonctionner, mais j’ai besoin de réémettre le certificat SSL.

Comme l’ancien serveur avait la configuration SSL, je suis le guide ici et j’exécute
./launcher rebuild app

Cela amène Docker à télécharger et mettre à jour plusieurs éléments. L’image actuelle est Discourse 2.6.0.beta3 - https://github.com/discourse/discourse version 29f7e0689f61c5d85960a88f741ac3abced12d3e

La première fois que je l’ai exécuté, j’ai reçu le message de mise à niveau de Postgres, j’ai donc exécuté ./launcher rebuild app à nouveau comme indiqué.

Maintenant, cela échoue systématiquement, je pense à cause de cette erreur avec une version insuffisante de Ruby installée.

ERREUR : Erreur lors de l'installation de bundler :
	bundler-2.5.3 requiert la version Ruby >= 3.0.0. La version Ruby actuelle est 2.7.2.137.

Voici la sortie complète

ÉCHEC

--------------------

Pups::ExecError: cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock) a échoué avec le retour #<Process::Status: pid 304 exit 1>

Emplacement de l'échec : /pups/lib/pups/exec_command.rb:112:in `spawn'

exec a échoué avec les paramètres {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,\\\"\\\"); print $0 }' Gemfile.lock)", "find $home ! -user discourse -exec chown discourse {} \\+"]}

2ad07f29ace1b5396d9944fc4fc5a1ec712727280e8bb3df760367d08bfe6a25

** ÉCHEC DU BOOTSTRAP ** veuillez remonter et rechercher les messages d'erreur précédents, il peut y en avoir plus d'un.

Je pensais que Docker mettrait à jour la version de Ruby si nécessaire ?

J’ai essayé de me connecter manuellement au conteneur et d’installer RVM, puis d’activer Ruby v3+ mais je continue d’obtenir la même erreur.

Je suis un peu perdu à ce stade et je me demande si la version installée est tout simplement trop ancienne pour être mise à niveau avec ./launcher ?

Tout conseil serait très apprécié !

Juste une note, ce n’est pas l’erreur, les erreurs réelles seront plus haut.

2 « J'aime »

Je recommande de commencer avec une nouvelle image et d’effectuer une installation standard.

1 « J'aime »

Merci Jay, je craignais que ce soit la seule solution

Je suppose que je dois juste trouver un moyen et espérer pouvoir copier la base de données pour que tout ne soit pas perdu.

Essayez de mettre à jour tous vos packages en utilisant apt upgrade

Ce n’est pas difficile. Vous pouvez simplement faire une sauvegarde, ou déplacer un site Discourse vers un autre VPS avec rsync. Vous n’avez rien à perdre puisque votre site existant reste intact. C’est la manière la plus sûre d’avancer.

1 « J'aime »

J’ai mis à jour tout ce que j’ai pu, y compris la version Ubuntu du serveur et j’ai confirmé que j’utilise ruby v3.1.

Le problème est que je soupçonne que c’est la version de ruby nécessaire dans le conteneur qui est contrôlée par docker, et je n’arrive pas à la mettre à jour.

J’ai réussi à installer une version propre et à la faire fonctionner 3.3.0.beta3-dev

Cependant, lorsque j’ai restauré la sauvegarde de l’ancien site, il semble qu’elle ne se soit pas restaurée correctement et maintenant la page de connexion ne fonctionne plus. En regardant la console JS, il y a une erreur Discourse is not defined chaque fois que je clique sur les boutons de connexion/inscription. Je pense qu’en raison de la grande différence de versions, ce n’est pas une simple récupération d’une sauvegarde 2.6.0 vers une installation propre 3.3.0

Déplacer tout vers un nouveau serveur ne fonctionne pas pour moi, car je ne peux pas exécuter ./launcher rebuild app sans que cette erreur ruby ne me bloque à chaque fois.

Si vous effectuez une mise à niveau aussi importante, il est fort probable que vos thèmes soient cassés. Essayez le mode sans échec.

3 « J'aime »

Techniquement, il n’y a pas encore de 3.3.0, nous sommes encore en phase bêta.

1 « J'aime »

Merci pour les informations, malheureusement lorsque j’essaie d’accéder à /safe-mode, cela me redirige à nouveau vers l’URL /login.

Je pense que je vais essayer une réinstallation et recommencer.

J’ai utilisé l’image officielle de discourse mais je suppose que cela installe juste la dernière version, qu’il s’agisse d’une bêta ou non. Ou existe-t-il un moyen de spécifier une version stable ou spécifique ?

Oui, vous le pouvez. Modifiez app.yml sur une nouvelle installation avant de construire discourse (puisque vous ne pouvez pas rétrograder). Choisissez la balise sur GitHub. J’ai dû faire cela il y a quelque temps lorsque j’ai dû restaurer une ancienne version avant de passer à la dernière.

Maintenant, je fais une image de la version fonctionnelle avant de mettre à niveau, au cas où quelque chose se passerait mal.

Merci, j’apprécie l’aide !

La bonne nouvelle est que j’ai réussi à trouver comment installer une ancienne version de discourse_docker et la même version de discourse en modifiant le fichier app.yml.

La mauvaise nouvelle est que j’ai rencontré une autre erreur vers la fin de l’installation.

--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' a échoué avec le retour #<Process::Status: pid 14351 exit 1>
Emplacement de l'échec : /pups/lib/pups/exec_command.rb:112:in `spawn'
exec a échoué avec les paramètres {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

Je vais devoir creuser un peu plus, cela semble être plus lié à ruby/rails dans le conteneur lui-même.

Essayez https://forum.example.com/login?safe_mode=no_themes%2Cno_plugins

2 « J'aime »