Encontrei um problema curioso que pode destacar outra diferença entre atualizações online e atualizações de linha de comando.
Se eu realizar uma atualização online com um plugin com o gem rmagick, ela é bem-sucedida.
No entanto, ela falha com uma reconstrução de CLI com:
ERROR: Erro ao instalar rmagick:
ERROR: Falha ao compilar a extensão nativa do gem.
diretório atual: /var/www/discourse/plugins/discourse-topic-previews-sidecar/gems/3.3.6/gems/rmagick-6.0.1/ext/RMagick
/usr/local/bin/ruby extconf.rb
verificando brew... não
verificando pacman... não
verificando versão Ruby >= 3.0.0... sim
*** extconf.rb falhou ***
Não foi possível criar o Makefile por algum motivo, provavelmente falta de bibliotecas e/ou cabeçalhos necessários. Verifique o arquivo mkmf.log para mais detalhes. Você pode precisar de opções de configuração.
Opções de configuração fornecidas:
--with-opt-dir
--without-opt-dir
--with-opt-include=${opt-dir}/include
--without-opt-include
--with-opt-lib=${opt-dir}/lib
--without-opt-lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/bin/$(RUBY_BASE_NAME)
--with-pkg-config
--without-pkg-config
--with-override-variables
--without-override-variables
/var/www/discourse/plugins/discourse-topic-previews-sidecar/gems/3.3.6/gems/pkg-config-1.5.6/lib/pkg-config.rb:504:in `parse_pc': .pc não existe: <MagickCore> (PackageConfig::NotFoundError)
Os gems só são compilados durante uma compilação completa? Ou pode ser que tenha havido um incremento na versão do Ruby que só é realizado em uma reconstrução completa? (o que então força uma refabricação do gem?)
Atualizamos nossa imagem, portanto estamos compilando o imagemagick separadamente e incluindo apenas o binário final do imagemagick. Assim, não estamos mais incluindo bibliotecas de tempo de compilação para o imagemagick na imagem, em um esforço para reduzir o tamanho de nossas imagens base.
Você poderia simplesmente adicionar um script de instalação para instalar as bibliotecas do imagemagick, mas eu recomendaria remover a dependência do plugin no gem rmagick. Não tenho certeza de onde esse gem está sendo chamado, pois parece que ele está estendendo as chamadas de otimização de imagem do Discourse principal, que apenas chamam diretamente o binário do imagemagick.
Mesmo que eu consiga encontrar uma solução alternativa, seria uma pena bloquear o uso do gem rmagick, pois a alternativa é mexer com chamadas de sistema para o ImageMagick, o que é um pouco… desajeitado… e muito menos amigável para o desenvolvedor em comparação com o uso de uma API conveniente na linguagem.
O formulário correto precisa de cmd: etc. Mas, desculpe, não dá. Não consigo confirmar se o erro é o mesmo, embora. Eu usei tmux e ele não me permite rolar.