DISCOURSE_CDN_URL unterbricht Rebuild/Restore

EDIT: Nun, es hat 18 Stunden gedauert, aber es scheint, dass die Definition von DISCOURSE_CDN_URL verhindert, dass diese Seite (zumindest) nach einer Wiederherstellung neu aufgebaut wird und/oder funktioniert. Ich schätze, das nächste, was ich testen sollte, ist ein Build ohne DISCOURSE_CDN_URL und dann das Starten des Containers mit der gesetzten ENV-Variable.

Was ich bereits wusste

Ich hatte dieses Problem gestern, dachte aber, es sei verschwunden, aber es stellte sich heraus, dass ich eine Datenbank von vor einem Monat wiederhergestellt habe. Die Wiederherstellung der aktuellen Datenbank bringt die Seite zum Erliegen.

Ich konnte die Seite von Grund auf neu erstellen, also liegt das Problem nicht am Code oder an Standard-Plugins. ABER nachdem ich die Datenbank wiederhergestellt habe, ist die Seite down, und ich kann keinen Neuaufbau durchführen, selbst wenn ich die Datenbank lösche. Ich vermute also, dass das Problem in einer Datei liegt, die beim Komprimieren des JavaScripts gelesen wird.

Ich habe versucht, alle background: image-url-Anweisungen in onebox.scss zu entfernen, was den Neuaufbau der Seite ermöglichte, aber die Anzeige ist komplett durcheinander. Diese Fehler sind also eher ein Symptom als die Ursache des Problems.

Nach der Wiederherstellung der Datenbank (und der Dateien) oder beim Neuaufbau erhalte ich im Rails-Log Fehler wie den folgenden:


I, [2019-12-22T21:21:25.532604 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
NOTE: Inheriting Faraday::Error::ClientError is deprecated; use Faraday::ClientError instead. It will be removed in or after version 1.0
Faraday::Error::ClientError.inherited called from /var/www/discourse/plugins/discourse-github/gems/2.6.5/gems/octokit-4.14.0/lib/octokit/middleware/follow_redirects.rb:14.
> Seeding dark and light themes
[SassC::FunctionsHandler] undefined method `protocol' for nil:NilClass
rake aborted!
Discourse::ScssError: Error: error in C function image-url: undefined method `protocol' for nil:NilClass
        on line 90 of app/assets/stylesheets/common/base/onebox.scss, in function `image-url`
        from line 90 of app/assets/stylesheets/common/base/onebox.scss, in mixin `onebox-favicon`
        from line 110 of app/assets/stylesheets/common/base/onebox.scss
        from line 34 of app/assets/stylesheets/common.scss
        from line 1 of 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 Ich bin gerade auf genau dieses Problem gestoßen, nachdem ich mich mit meinen anderen Problemen beim Einrichten von S3 herumgeschlagen habe. Hast du herausgefunden, was die Ursache dafür war?

Habe es behoben. Stelle sicher, dass du deiner CDN-URL http:// voranstellst :facepalm:

Also statt DISCOURSE_CDN_URL=your-cdn-url.com sollte es DISCOURSE_CDN_URL=http://your-cdn-url.com heißen.

Nur 2 Stunden verschwendet, um es zu debuggen :smiley:

Hmm, können wir hier eine Art Warnung hinzufügen, @eviltrout, damit andere in Zukunft nicht darauf hereinfallen?

Dies löst eine Warnung aus, wenn Sie kein Protokoll hinzufügen:

Aber Trottel (wie ich), die das mit ENV-Variablen machen, werden trotzdem Probleme haben. Gibt es einen Nachteil daran, die Warnung und das Voranstellen von https:// zu kombinieren?

GlobalSetting ist das Objekt, das deine ENV-Variablen in Discourse übernimmt. Wenn du es auf diese Weise machst, sollte die Warnung ebenfalls erscheinen.

Ich fühle mich auch ziemlich albern, in diese Falle getappt zu sein! :laughing:

Wenn ich mich richtig erinnere, habe ich während dessen, was eigentlich eine Weihnachtsferienpause sein sollte, 18 Stunden damit verbracht. :frowning_face: