DISCOURSE_CDN_URL interrumpe la reconstrucción/restauración

EDIT: Bueno, me tomó 18 horas, pero parece que definir DISCOURSE_CDN_URL impide que (al menos) este sitio se reconstruya y/o funcione después de una restauración. Supongo que lo siguiente a probar es realizar una compilación sin DISCOURSE_CDN_URL y luego iniciar el contenedor con la variable de entorno configurada.

Lo que sabía antes

Tuve este problema ayer, pero pensé que había desaparecido, pero resulta que restauré una base de datos de hace un mes. Restaurar la base de datos reciente inutiliza el sitio.

Pude compilar el sitio desde cero, por lo que no es un problema con el código ni con los plugins estándar. PERO después de restaurar la base de datos, el sitio está caído y no puedo realizar una reconstrucción, incluso si elimino la base de datos. Así que supongo que el problema está en algún archivo que se lee al comprimir el JavaScript.

Intenté eliminar todos los background: image-url en onebox.scss, lo que permitió que el sitio se reconstruyera, pero la visualización quedó totalmente desordenada, por lo que esos errores son un síntoma y no la causa del problema.

Obtengo errores como el siguiente en el registro de rails después de restaurar la base de datos (y los archivos) o al realizar una reconstrucción.


I, [2019-12-22T21:21:25.532604 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
NOTA: Heredar Faraday::Error::ClientError está obsoleto; usa Faraday::ClientError en su lugar. Se eliminará en o después de la versión 1.0
Faraday::Error::ClientError.inherited llamado desde /var/www/discourse/plugins/discourse-github/gems/2.6.5/gems/octokit-4.14.0/lib/octokit/middleware/follow_redirects.rb:14.
> Sembrando temas oscuro y claro
[SassC::FunctionsHandler] método `protocol` no definido para nil:NilClass
rake aborted!
Discourse::ScssError: Error: error en la función C image-url: método `protocol` no definido para nil:NilClass
        en la línea 90 de app/assets/stylesheets/common/base/onebox.scss, en la función `image-url`
        desde la línea 90 de app/assets/stylesheets/common/base/onebox.scss, en el mixin `onebox-favicon`
        desde la línea 110 de app/assets/stylesheets/common/base/onebox.scss
        desde la línea 34 de app/assets/stylesheets/common.scss
        desde la línea 1 de desktop.scss
>>     background: image-url("favicons/#{$image}.png") no-repeat 0% 50%;

   ----------------^
/var/www/discourse/lib/stylesheet/manager.rb:183:in `rescue in compile'
/var/www/discourse/lib/stylesheet/manager.rb:171:in `compile'
/var/www/discourse/lib/stylesheet/manager.rb:80:in `block (2 levels) in stylesheet_details'
/var/www/discourse/lib/stylesheet/manager.rb:66:in `each'
/var/www/discourse/lib/stylesheet/manager.rb:66:in `block in stylesheet_details'
/var/www/discourse/lib/stylesheet/manager.rb:64:in `synchronize'
/var/www/discourse/lib/stylesheet/manager.rb:64:in `stylesheet_details'
/var/www/discourse/lib/stylesheet/manager.rb:34:in `stylesheet_data'
/var/www/discourse/app/models/theme.rb:280:in `block in refresh_message_for_targets'
/var/www/discourse/app/models/theme.rb:279:in `map'
/var/www/discourse/app/models/theme.rb:279:in `refresh_message_for_targets'
/var/www/discourse/app/models/theme.rb:267:in `notify_theme_change'
/var/www/discourse/app/models/theme.rb:275:in `notify_theme_change'
/var/www/discourse/app/models/theme.rb:61:in `block in <class:Theme>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:429:in `instance_exec'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:429:in `block in make_lambda'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:239:in `block in halting_and_conditional'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.r

@pfaffman Acabo de tropezar con exactamente el mismo problema después de lidiar con mis otros problemas al intentar configurar S3. ¿Lograste averiguar qué lo estaba causando?

¡Lo solucioné! Asegúrate de que tu URL del CDN comience con http:// :facepalm:

Así que en lugar de DISCOURSE_CDN_URL=tu-url-cdn.com, debería ser DISCOURSE_CDN_URL=http://tu-url-cdn.com.

Solo 2 horas desperdiciadas depurándolo :smiley:

Hmm, ¿podemos añadir algún tipo de advertencia aquí, @eviltrout, para que la gente no se encuentre con esto en el futuro?

Esto mostrará una advertencia si no agregas un protocolo:

Pero los novatos (como yo) que hacen esto con variables de entorno seguirán teniendo problemas. ¿Hay alguna desventaja en imprimir la advertencia y anteponer https://?

GlobalSetting es el objeto que recibe tus variables de ENV en Discourse, por lo que si lo haces de esa manera, la advertencia también debería aparecer.

¡Yo también me siento bastante tonto por caer en esta trampa! :laughing:

Si no recuerdo mal, perdí 18 horas en eso durante lo que debería haber sido unas vacaciones de Navidad. :cara_triste: