Erro ao executar "bundle exec rake s3:upload_assets" - Não foi possível localizar o Gemfile ou o diretório .bundle/

Estou tentando executar "bundle exec rake s3:upload_assets" como root e ele retorna o seguinte erro: Could not locate Gemfile or .bundle/ directory.

Também tentei executar sem ser root, usando "sudo -E -u discourse bundle exec rake s3:upload_assets" e ele retornou o seguinte erro: sudo: unknown user discourse\nsudo: error initializing audit plugin sudoers_audit

  • Executei ambos os comandos no seguinte diretório: /var/discourse
  • Esta é uma instalação normal, não estou usando docker nem nada.

Como posso corrigir isso para conseguir executar este comando?

Obrigado.

Você precisa executá-lo dentro do contêiner.

cd /var/discourse
./launcher enter app

E então execute esse comando

1 curtida

Obrigado! Isso me levou mais adiante, agora estou com este erro:

root@redacted:/var/www/discourse# sudo -E -u discourse bundle exec rake s3:upload_assets
/root não é gravável.
O Bundler usará `/tmp/bundler20250409-510203-w6snye510203` como seu diretório temporário.
ERRO: Certifique-se de que o S3 esteja configurado em config/discourse.conf ou em variáveis de ambiente

Eu tenho tudo configurado nas configurações do site do Discourse. Eu não estou usando Docker, então não precisaria de variáveis de ambiente?

Tentei adicionar as variáveis de ambiente em app.yml, reconstruí, reentrei no app e executei o comando e ele retorna isto:

`/root` não é gravável.
O Bundler usará `/tmp/bundler20250409-1393-48ek5u1393' como seu diretório inicial temporariamente.
Instalando regras CORS...
Tentando aplicar o conjunto de regras CORS de ASSETS S3 no bucket biohacking-forum.
rake abortou!
Seahorse::Client::NetworkingError: Corpo da resposta vazio ou incompleto (Seahorse::Client::NetworkingError)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/dualstack.rb:21:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/accelerate.rb:43:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/checksum_algorithm.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/invocation_id.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/request_callback.rb:89:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `block in call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/telemetry/no_op.rb:29:in `in_span'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:53:in `span_wrapper'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/client.rb:6359:in `get_bucket_cors'
/var/www/discourse/lib/s3_helper.rb:401:in `fetch_bucket_cors_rules'
/var/www/discourse/lib/s3_helper.rb:168:in `ensure_cors!'
/var/www/discourse/lib/s3_cors_rulesets.rb:60:in `sync'
/var/www/discourse/lib/tasks/s3.rake:183:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tarefas: TOP => s3:upload_assets => s3:ensure_cors_rules
(Veja o rastreamento completo executando a tarefa com --trace)

Ainda não consigo descobrir isso :frowning:

Você precisa de variáveis de ambiente, é por isso que está documentado dessa forma em Configure um provedor de armazenamento de objetos compatível com S3 para uploads e por que a mensagem de erro diz para fazer isso.

Todas as variáveis S3 devem ser movidas para configurações ocultas, pois, na maioria das vezes, nada de bom pode vir da configuração delas nas configurações.

Desculpe, e eu esqueci que você não está usando Docker. Mas sim, você ainda precisa defini-las nas variáveis de ambiente. Eu faço isso em meu ambiente de desenvolvimento para restaurar bancos de dados do S3.

Se você não está fazendo isso para um ambiente de desenvolvimento, é muito provável que esteja cometendo um grande erro.

@Eviepayne

Corrigi fazendo o seguinte - havia dois erros.

Primeiro, corrigi o segundo erro fazendo o seguinte:

rails c
Upload.find(386).destroy!
exit

Isso corrigiu a postagem corrompida (texto mal formatado ou algo assim).

Então, os erros vermelhos na tela foram causados pelo uso do subdomínio aleatório (fornecido pela Cloudflare) e pelo upload para ele. Tive que fazer o upload dos arquivos para o novo domínio (que inclui meu domínio conectado).

Usando:

sudo -E -u discourse bundle exec rake s3:upload_assets

Em seguida:

sudo -E -u discourse bundle exec rake uploads:migrate_to_s3

Então o fórum carregou corretamente e clicar com o botão direito e abrir imagens em uma nova aba mostra que elas estão hospedadas no R2. Então fiz um backup.

Finalmente, limpei tudo usando:

sudo -E -u discourse bundle exec rake uploads:clean_up

O que liberou o espaço de armazenamento respectivo dos arquivos (observe que ainda tenho um backup local de ambos os arquivos (nível do sistema operacional) e nível do discourse antes da migração).

Agora tudo funciona perfeitamente!

3 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.