خطأ داخلي: طريقة غير معرفة `visibility_reason_id'

أدير مثيل Discourse على https://lilypond.community. قبل بضع ساعات، استخدمت واجهة الويب لترقية Discourse إلى 3.3.0beta2. فشلت بنفس الخطأ الموجود على 3.3.0.beta2-dev update error - #8 by david. في ذلك الوقت، لم يكن لدي وقت للتحقيق، لذا تركته كما هو، لكن المنتدى بدا لا يزال يعمل. الآن يعرض

\u003e عفوًا
\u003e
\u003e واجه البرنامج الذي يشغل منتدى المناقشة هذا مشكلة غير متوقعة. نعتذر عن الإزعاج.
\u003e
\u003e تم تسجيل معلومات مفصلة حول الخطأ، وتم إنشاء إشعار تلقائي. سنلقي نظرة عليه.
\u003e
\u003e لا يلزم اتخاذ أي إجراء إضافي. ومع ذلك، إذا استمرت حالة الخطأ، يمكنك تقديم تفاصيل إضافية، بما في ذلك خطوات لتكرار الخطأ، عن طريق نشر موضوع مناقشة في فئة ملاحظات الموقع.

على أي صفحة (/، /t/topic-slug، إلخ).

لقد اتبعت النصيحة في الموضوع المرتبط:

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

لكن ذلك لم يساعد. لست متأكدًا بنسبة 100٪ من أن المشكلة مرتبطة فعليًا بالترقية، على الرغم من أنني أجدها محتملة.

هذا ما أجده في /var/discourse/shared/standalone/log/rails/production.log، مباشرة بعد محاولة الوصول إلى الصفحة https://lilypond.community/t/effacer-les-citations-du-conducteur/5698/8:

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

لصفحة مستخدم:

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'

وللصفحة الرئيسية:

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'

بالنظر إلى الكود، يبدو أن visibility_reason_id وما شابهها هي حقول قاعدة بيانات جديدة في هذا الإصدار، والتي كان من المفترض إضافتها إلى قاعدة البيانات الحالية بواسطة نصوص الترحيل (مثل db/migrate/20240423013808_add_visibility_reason_id_to_topics.rb). أشك في أن الترقية توقفت في منتصف الطريق قبل تشغيل هذه.

هل هناك طريقة للتراجع بشكل نظيف إلى الإصدار 3.3.0beta1 وإعادة تشغيل الترحيل؟ إذا قمت بتشغيل git checkout v3.3.0.beta1 داخل حاوية Docker (./launcher enter app)، فهل هذا خطير؟

هل ما زال يحدث إذا قمت بإعادة البناء مرة أخرى؟ ماذا يقول سجل إعادة البناء إذا استمرت المشكلة؟ :thinking:

3 إعجابات

حسنًا، لقد نجح الأمر. شكرًا لك!

إعجاب واحد (1)

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