Interner Fehler: Unbekannte Methode `visibility_reason_id'

Ich verwalte eine Discourse-Instanz unter https://lilypond.community. Vor ein paar Stunden habe ich über die Weboberfläche Discourse auf 3.3.0beta2 aktualisiert. Dies schlug mit der gleichen Fehlermeldung fehl wie unter 3.3.0.beta2-dev update error - #8 by david. Zu diesem Zeitpunkt hatte ich keine Zeit, das Problem zu untersuchen, also ließ ich es so, wie es war, aber das Forum schien noch funktionsfähig zu sein. Jetzt zeigt es Folgendes an:

Ups

Die Software, die dieses Diskussionsforum antreibt, ist auf ein unerwartetes Problem gestoßen. Wir entschuldigen uns für die Unannehmlichkeiten.

Detaillierte Informationen über den Fehler wurden protokolliert und eine automatische Benachrichtigung generiert. Wir werden uns darum kümmern.

Es sind keine weiteren Maßnahmen erforderlich. Wenn das Fehlerproblem jedoch weiterhin besteht, können Sie zusätzliche Details, einschließlich der Schritte zur Reproduktion des Fehlers, angeben, indem Sie ein Diskussionsthema in der Feedback-Kategorie der Website posten.

auf jeder Seite (/, /t/topic-slug usw.).

Ich bin den Anweisungen im verlinkten Thema gefolgt:

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

aber es hat nicht geholfen. Ich bin mir nicht zu 100 % sicher, ob das Problem tatsächlich mit dem Upgrade zusammenhängt, obwohl ich es für wahrscheinlich halte.

Dies ist, was ich in /var/discourse/shared/standalone/log/rails/production.log finde, kurz nachdem ich versucht habe, auf die Seite https://lilypond.community/t/effacer-les-citations-du-conducteur/5698/8 zuzugreifen:

Started GET "/t/effacer-les-citations-du-conducteur/5698/8" for [IP redacted] at 2024-05-16 20:49:53 +0000
Processing by TopicsController#show as HTML
  Parameters: {"slug"=>"effacer-les-citations-du-conducteur", "topic_id"=>"5698", "post_number"=>"8"}
Completed 500 Internal Server Error in 39ms (ActiveRecord: 0.0ms | Allocations: 14832)
NoMethodError (undefined method `visibility_reason_id' for #<Topic id: 5698, title: "Effacer les citations du conducteur", [...]>)
app/serializers/topic_view_serializer.rb:327:in `include_visibility_reason_id?'
(eval):37:in `_fast_attributes'
app/controllers/topics_controller.rb:1360:in `block (2 levels) in perform_show_response'
app/controllers/topics_controller.rb:1354:in `perform_show_response'
app/controllers/topics_controller.rb:187:in `show'
app/controllers/application_controller.rb:423:in `block in with_resolved_locale'
app/controllers/application_controller.rb:423:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:391:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'
start
done

Für eine Benutzerseite:

Started GET "/u/jeanas/" for [IP redacted] at 2024-05-16 20:47:21 +0000
Processing by UsersController#show as HTML
  Parameters: {"username"=>"jeanas"}
Completed 500 Internal Server Error in 180ms (ActiveRecord: 0.0ms | Allocations: 80166)
NoMethodError (undefined method `custom_homepage' for #<ThemeModifierHelper:0x00007f37a9f775c8 @theme_ids=[1]>)
app/serializers/user_serializer.rb:327:in `can_pick_theme_with_custom_homepage'
(eval):100:in `_fast_attributes'
app/controllers/users_controller.rb:152:in `block (2 levels) in show'
app/controllers/users_controller.rb:149:in `show'
app/controllers/application_controller.rb:423:in `block in with_resolved_locale'
app/controllers/application_controller.rb:423:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:393:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'

Und für die Startseite:

Started GET "/" for [IP redacted] at 2024-05-16 20:54:16 +0000
NoMethodError (undefined method `custom_homepage' for #<ThemeModifierHelper:0x00007f37aba0c488 @theme_ids=[]>)
lib/homepage_helper.rb:5:in `resolve'
lib/homepage_constraint.rb:12:in `matches?'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:393:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:277:in `call'

Wenn ich mir den Code ansehe, scheint es, dass visibility_reason_id und ähnliche Felder neue Datenbankfelder in dieser Version sind, die durch Migrationsskripte (z. B. db/migrate/20240423013808_add_visibility_reason_id_to_topics.rb) zur bestehenden Datenbank hinzugefügt werden sollten. Ich vermute, dass das Upgrade auf halbem Weg gestoppt wurde, bevor diese ausgeführt wurden.

Gibt es eine Möglichkeit, sauber auf 3.3.0beta1 zurückzurollen und die Migration erneut durchzuführen? Ist es gefährlich, wenn ich git checkout v3.3.0.beta1 innerhalb des Docker-Containers (./launcher enter app) ausführe?

Passiert es immer noch, wenn Sie ein zweites Mal neu erstellen? Was sagt das Build-Protokoll, wenn das Problem weiterhin besteht? :thinking:

3 „Gefällt mir“

Das hat funktioniert. Danke!

1 „Gefällt mir“

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