Site em branco após atualização

Olá,

Acabei de atualizar nosso Fórum Discourse e agora ele está em branco (página inicial e admin). O HTML parece OK, os feeds RSS estão funcionando.

Encontrei erros de JS relacionados ao nosso tema. Será que o problema pode ser isso?
Capture d’écran 2020-08-22 à 15.57.03

Como posso corrigir isso? Posso modificar/desativar o código JS do meu tema via CLI? Ou devo instalar um novo tema?

Edição: Não tenho outro tema instalado, então não posso usar ?preview_theme_id=

Olá @CamilleRoux

Você também pode alterar o tema padrão diretamente no banco de dados com SQL, se estiver confortável com consultas diretas ao BD.

Espero que ajude.

Você já tentou Como usar o Modo Seguro do Discourse?

O que você está fazendo :thinking: ?

  • Verifique o modo de segurança: https://forum.humancoders.com/?safe_mode=no_custom%2Cno_plugins%2Conly_official

  • Logs https://forum.humancoders.com/logs (privado?)

Tente executar via SSH:

cd /var/discourse
git pull
./launcher rebuild app

O modo seguro não está funcionando… mesmo erro:

ReferenceError: Discourse is not defined
    at https://forum.humancoders.com/assets/start-discourse-efa4e5abfbd1b50b5152ffbe64d5dcea9f7c33f766dcc6387e2711f0f2112148.js:1:1

Já fiz um rebuild ./launcher rebuild app

Não tenho outros temas instalados, então devo instalar um novo tema via CLI ou modificar o existente. Não sei como fazer isso

Ah, então seu tema padrão tem coisas quebradas, então não há como desativá-lo? Se foi isso que aconteceu, então é por isso que você quer sempre colocar essas personalizações nos componentes do tema (embora não seja o momento mais útil para te dizer isso!). (Mas não tenho certeza total de que seja esse o caso).

E você não tem plugins de terceiros?

Acho que o que você precisa fazer, talvez, seja no console do Rails, criar um novo tema vazio e, em seguida, alterar o padrão para o novo tema. Não sei, de imediato, exatamente como fazer isso.

Ainda não tenho certeza de que o problema vem do tema. Mas, se for o caso, sim, criar um tema vazio e defini-lo como padrão pode resolver o problema. Não sei como fazer isso :frowning:

Eu também não. :man_shrugging:

Eu também não. Acredito que conseguiria descobrir, mas tenho uma série de trabalhos pagos que estou tentando não fazer no fim de semana.

Olá @CamilleRoux

Acabei de verificar seu site para você, configurando a string UA no console de desenvolvedor como Google Bot. Isso exibirá o site apenas do Rails, sem o Ember SPA.

Você pode ver que seu site está “OK” do ponto de vista do Rails, o que indica que seu contêiner está funcionando corretamente e, como você já suspeitou, há um problema de JavaScript no seu tema (componente).

Veja em anexo:

@CamilleRoux

Você consegue acessar um prompt psql (ou usar o console do Rails, se preferir) e executar as seguintes consultas:

Vamos verificar quantos temas você tem instalados:

discourse=# select count(*) from themes;
 count 
-------
    22
(1 row)

Vamos verificar qual é o ID do seu tema padrão (atualmente):

discourse=# select value from site_settings where name = 'default_theme_id';
 value 
-------
 3
(1 row)

Além disso, você pode executar esta também?

discourse=# select id, name, component, enabled from themes;
 id |           name            | component | enabled 
----+---------------------------+-----------+---------
  3 | Light                     | f         | t
  6 | Minima                    | f         | t
  7 | Hamburger Theme Selector  | t         | t
  2 | Material Dark             | f         | t
  8 | Vincent                   | f         | t
  5 | Material                  | f         | t
  9 | Simple                    | f         | t
 10 | Graceful Wide             | f         | t
 11 | Dark Wide                 | f         | t
 14 | Alien Night               | f         | t
 39 | md-composer-extras-neo    | t         | t
 40 | Plugin Outlets            | t         | f
 15 | User Card Directory       | t         | f
 41 | Raw Post Button           | t         | t
  4 | Graceful                  | f         | t
  1 | Dark for GSE              | f         | t
 42 | Dark                      | f         | t
 43 | discourse gifs            | t         | t
 44 | Cookie Consent Banner     | t         | t
 46 | Graceful Edits            | t         | t
 45 | Neo Stuff Scratch Sheets  | t         | t
 48 | Unformatted Code Detector | t         | t

A propósito,

@CamilleRoux

Acabei de testar isso para você.

Depois de executar as consultas no meu post acima para listar todos os seus temas (e você tiver um registro do estado atual dos seus temas), assumindo que você consiga acessar seu banco de dados e executar esta consulta, seja pelo Rails ou diretamente pelo psql, você pode tentar o seguinte:

Consulta para desativar todos os componentes do tema

discourse=#  update themes set enabled = false where component = true;

A consulta acima desativará todos os componentes dos seus temas.

Em seguida, você poderá ver “o que acontece” ao tentar acessar seu site com problemas.

Se eu estivesse na sua situação atual, com base na verificação do seu site como um agente de usuário (bot), eu desativaria todos os componentes dos temas.

Na verdade, eu os desativaria um por um, começando por qualquer componente de tema relacionado a links de navegação (veja o erro de JS abaixo como ponto de partida); porque estou confortável e tenho experiência com consultas SQL diretas ao banco de dados. Você tem habilidades sólidas em SQL?

Se você não se sente confortável com isso, pode me enviar uma mensagem e me dar acesso, e eu ajudarei você a superar essa “situação pouco agradável” em que está. Tenho quase certeza, com base nas informações que tenho no momento, de que posso ajudá-lo a voltar a funcionar :slight_smile:

Veja também seu erro de JS:
Discourse.ExternalNavItem=Discourse.NavItem.extend({href:function(){return this.get('href');}.property('href')});I18n.translations.fr.js.filters.formations={title:"Formações",help:"Formações para desenvolvedor·se·s"};Discourse.NavItem.reopenClass({buildList:function(category,args){var list=this._super(category,args);list.push(Discourse.ExternalNavItem.create({href:'https://www.humancoders.com/',name:'formações'}));return list;}});jQuery(function($){$(document).on("ready",function(){if(Cookies.get('hcFirstPage')==undefined){$(document).on('click','.toggle-menu',function(e){e.preventDefault();$('.main-nav').toggleClass('show');});var tweenBounce=TweenMax.to('#topbar',1.2,{maxHeight:"50px",delay:2,ease:Power1.easeInOut});var tweenBounceBack=TweenMax.to('#topbar',1.2,{maxHeight:"4px",delay:5.5,ease:Power1.easeInOut});Cookies.set('hcFirstPage',true,{expires:.04});}else{var tweenBounce=TweenMax.to('#topbar',0);}
window.addEventListener('unload',function(){Cookies.remove('hcFirstPage');});var tweenOpen,tweenClose;$('.topbar-toggle').on('mouseenter',function(){tweenBounce.kill();tweenOpen=TweenMax.to('#topbar',.4,{maxHeight:"50px",ease:Power1.easeInOut});});$('#topbar-zone-click').on('mouseenter',function(){tweenBounce.kill();tweenOpen=TweenMax.to('#topbar',.4,{maxHeight:"50px",ease:Power1.easeInOut});});$('#topbar').on('mouseenter',function(){tweenBounce.kill();tweenOpen=TweenMax.to('#topbar',.4,{maxHeight:"50px",ease:Power1.easeInOut});});$('#topbar-zone-click').on('mouseleave',function(){tweenOpen.kill();tweenClose=TweenMax.to('#topbar',.4,{maxHeight:"4px",ease:Power1.easeInOut});});$('.topbar-toggle').on('mouseleave',function(){tweenOpen.kill();tweenClose=TweenMax.to('#topbar',.4,{maxHeight:"4px",ease:Power1.easeInOut});});$('#topbar').on('mouseleave',function(){tweenOpen.kill();tweenClose=TweenMax.to('#topbar',.4,{maxHeight:"4px",ease:Power1.easeInOut});});});});

OK, obrigado, pessoal, pela ajuda.
É uma instalação antiga e eu não tinha nenhum outro tema ou componente instalado. Então, não foi possível alterar meu tema ou desativar todos os componentes.
Por isso, restaurei um backup antigo, atualizei meu tema e, em seguida, atualizei o Discourse. Está melhor, mas ainda tenho um erro (foram dois antes).

Aqui está o erro:

Uncaught ReferenceError: Discourse is not defined
<anonymous> /assets/start-discourse-efa4e5abfbd1b50b5152ffbe64d5dcea9f7c33f766dcc6387e2711f0f2112148.js:1

Eis o que contém este arquivo:

Discourse.start();

Tenho uma versão antiga do tema padrão? (o tema atual foi criado em 2016 apenas adicionando alguns CSS e JS ao tema padrão)

PS: O site está funcionando novamente porque estou usando o backup sem atualizar o Discourse.

Então, acho que o que eu faria é criar um novo tema genérico, defini-lo como padrão, fazer a atualização e corrigir seu tema.

Pequena atualização: tenho o bug em algumas versões do Discourse, mas não em todas.
Funciona corretamente em stable e tests-passed, mas não em beta. Então, admito que o bug já foi corrigido, mas ainda não foi commitado para a beta.

Mas o problema é com a personalização do seu tema ou com um tema padrão?

Com a versão beta atual, tenho o mesmo bug, independentemente do tema.