Desenvolvendo na versão mobile do Discourse

Tenho uma instalação de desenvolvimento local do Discourse rodando na minha máquina Ubuntu. Tenho a versão principal de desenvolvimento funcionando perfeitamente seguindo o guia de instalação local. Dada a nova adição do ember-cli, também estou com ele funcionando, fazendo proxy para o aplicativo Rails. Consigo interagir totalmente com a versão desktop do aplicativo.

No entanto, quando uso o DevTools do Chrome para visualizar a versão mobile, as coisas não estão funcionando. Simplesmente recebo uma página em branco com uma resposta “200 OK”, mas absolutamente nenhum conteúdo. Está completamente em branco.

Posso ver através dos logs do Rails que ele está renderizando algo, mas não parece ser encaminhado pelo Ember.

Started GET "/" for <redacted> at 2022-01-31 22:51:03 +0000
   Rendering layout layouts/application.html.erb
   Rendering categories/index.html.erb within layouts/application
   Rendered categories/index.html.erb within layouts/application (Duration: 2.8ms | Allocations: 925)
   Rendered layouts/_head.html.erb (Duration: 1.6ms | Allocations: 273)
   Rendered common/_discourse_stylesheet.html.erb (Duration: 3.2ms | Allocations: 609)
   Rendered layouts/_head_tag.html.erb (Duration: 0.2ms | Allocations: 65)
   Rendered application/_header.html.erb (Duration: 2.5ms | Allocations: 824)
   Rendered layouts/_body_tag.html.erb (Duration: 0.1ms | Allocations: 21)
   Rendered layout layouts/application.html.erb (Duration: 22.6ms | Allocations: 4961)

O ember-cli não está registrando nada sobre a solicitação.

Presumivelmente, configurei algo errado e ele está gerando um erro em algum lugar, mas não consigo descobrir onde ou como fazer o erro aparecer. Existem sinalizadores adicionais ou variáveis de ambiente que posso definir para obter logs mais detalhados sobre esse problema? Tentei definir DEBUG=ember-cli:* como sugerido aqui, mas isso não registrou nada sobre a solicitação.

Qualquer ajuda sobre esse problema seria muito apreciada! Usuário de longa data do Discourse, obrigado por desenvolvê-lo!

2 curtidas

Algum erro de javascript no console do navegador?

1 curtida

Infelizmente não. A única coisa que aparece no console é isto (em vermelho):

GET http://localhost:4200/ 200 (OK)

A resposta, estranhamente, está completamente vazia.

Alguma ideia de como habilitar logs mais detalhados para o Ember CLI ou para o próprio Discourse? Se eu pudesse ver qual é o erro, provavelmente conseguiria resolver o problema. Por algum motivo, não consigo ver nenhum erro. Alguma ideia?

Após investigar o código-fonte, encontrei duas variáveis de ambiente que ajudam:

  • PRINT_EXCEPTIONS - mostra todas as exceções, talvez seja barulhento demais para ser valioso, mas ajudou.
  • RAILS_LOGS_STDOUT - registra tudo no console, que é o que eu estava procurando acima.

Isso ajudou a confirmar que não havia nenhum erro ocorrendo no Rails nem no SCSS do meu tema.

Aparentemente, havia algum componente gzip preso entre o Ember e o Rails. Não tenho certeza de como isso foi parar lá, mas quando o cabeçalho Content-Encoding existia, esta linha específica copiava isso e fazia com que o navegador (e o curl) ignorassem todo o corpo da resposta (presumivelmente porque não estava mais codificado em gzip).

Parece que isso foi corrigido na versão 2.9.0.beta1, mas estou usando a versão 2.7.13.

Remover o componente gzip em desenvolvimento corrigiu o problema para minha versão específica, mas parece que funcionará bem com gzip no futuro. Não tenho certeza por que a versão desktop não apresentou o mesmo problema.

Espero que isso ajude qualquer outra pessoa que esteja enfrentando problemas semelhantes.

3 curtidas