Não consigo atualizar o Ruby, então o ./launcher rebuild app continua falhando

Olá,

Recentemente migrei uma imagem de servidor com o Docker Discourse instalado.

Consigo iniciar tudo, mas preciso reemitir o certificado SSL.

Como o servidor antigo tinha SSL configurado, estou seguindo a sugestão deste guia e executando
./launcher rebuild app

Isso faz com que o Docker baixe e atualize várias coisas. A imagem atual é Discourse 2.6.0.beta3 - https://github.com/discourse/discourse version 29f7e0689f61c5d85960a88f741ac3abced12d3e

Na primeira vez que executei, recebi a mensagem de Upgrade do Postgres, então executei ./launcher rebuild app novamente, conforme instruído.

Agora, ele continua falhando a cada vez, acredito que devido a este erro com uma versão insuficiente do Ruby instalada.

ERRO:  Erro ao instalar bundler:
	bundler-2.5.3 requer a versão Ruby >= 3.0.0. A versão atual do ruby é 2.7.2.137.

Aqui está a saída completa

FALHOU

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

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

Localização da falha: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec falhou com os parâmetros {"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

** FALHA AO INICIALIZAR ** por favor, role para cima e procure por mensagens de erro anteriores, pode haver mais de uma.

Eu esperava que o Docker atualizasse a versão do Ruby conforme necessário?

Tentei fazer login manualmente no contêiner e instalar o RVM, e ativei o Ruby v3+, mas continuo recebendo o mesmo erro.

Estou um pouco perdido neste momento e me pergunto se a versão instalada é apenas muito antiga para ser atualizada com ./launcher?

Qualquer conselho seria muito apreciado!

Apenas uma observação, esse não é o erro, os erros reais estarão mais acima.

2 curtidas

Eu recomendo começar com uma nova imagem e fazer uma instalação padrão.

1 curtida

Obrigado Jay, eu temia que essa pudesse ser a única maneira de seguir em frente

Acho que só preciso encontrar uma maneira e esperar que eu possa copiar o banco de dados para que tudo não seja perdido

Tente atualizar todos os seus pacotes usando apt upgrade

Não é difícil. Você pode simplesmente fazer um backup ou usar Mover um site Discourse para outro VPS com rsync. Você não tem nada a perder, pois seu site existente permanece intacto. É a maneira mais segura possível de seguir em frente.

1 curtida

Atualizei tudo o que pude, incluindo a versão do Ubuntu do servidor e confirmei que estou executando o ruby v3.1.

O problema é que suspeito que seja a versão do ruby necessária no contêiner, que é controlada pelo docker, e não consigo atualizá-la.

Consegui instalar uma versão limpa e colocá-la em funcionamento 3.3.0.beta3-dev

No entanto, quando restaurei o backup do site antigo, não parece que foi restaurado corretamente e agora a página de login não funciona. Olhando no console JS, há um erro Discourse is not defined sempre que clico nos botões de login/cadastro. Acho que por causa da grande diferença nas versões, não é uma simples recuperação de um backup 2.6.0 para uma instalação limpa 3.3.0

Mover tudo para um novo servidor simplesmente não está funcionando para mim, pois não consigo executar ./launcher rebuild app sem que este erro ruby me bloqueie a cada vez.

Se você estiver executando uma atualização tão grande, é uma boa aposta que seus temas estejam quebrados. Tente o modo de segurança.

3 curtidas

Tecnicamente ainda não existe a versão 3.3.0, ainda estamos passando pelas betas.

1 curtida

Obrigado pelas informações, infelizmente quando tento acessar /safe-mode ele apenas redireciona de volta para a URL /login novamente.

Acho que vou tentar reinstalar e começar de novo.

Eu usei a imagem oficial do discourse, mas acho que isso apenas instala a versão mais recente, independentemente de ser uma versão beta. Ou existe uma maneira de eu especificar uma versão estável ou específica?

Sim, você pode. Edite o app.yml em uma instalação nova antes de compilar o discourse (já que você não pode fazer downgrade). Escolha a tag do GitHub. Tive que fazer isso há algum tempo quando precisei restaurar para uma versão antiga antes de atualizar para a mais recente.

Agora eu crio uma imagem da versão funcionando antes de atualizar, caso algo dê errado.

Obrigado, aprecio a ajuda!

A boa notícia é que consegui descobrir como instalar uma versão mais antiga do discourse_docker e a mesma versão do discourse, alterando o arquivo app.yml.

A má notícia é que encontrei mais um erro perto do final da instalação.

--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' falhou com retorno #<Process::Status: pid 14351 exit 1>
Localização da falha: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec falhou com os parâmetros {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

Terei que investigar isso um pouco mais, parece ser mais relacionado a ruby/rails dentro do container.

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

2 curtidas