أحاول ترقية تثبيت Discourse الخاص بي من علامة الصورة 3.0.6 إلى 3.1.1 ولكني أواجه المشكلة التالية. أعلم أنني أستخدم ما يُعتبر تثبيتًا غير مدعوم باستخدام Bitnami Helm Chart في مجموعة Kubernetes ولكني عالق تمامًا في كيفية الحل.
الخطأ أدناه يتم إصداره عندما أحاول الترقية من تثبيت Discourse جاهز للاستخدام (لا توجد إضافات إضافية مضافة) إلى أحدث إصدار. بالنظر إلى المنتدى يمكنني رؤية هذا المنشور - Upgrade failed (NoMethodError: undefined method `register_bookmarkable' for Bookmark:Class) - ولكنه يتحدث عن إضافة discourse-data-explorer التي كما ذكرت أعلاه ليست مثبتة في تثبيت Bitnami Discourse الافتراضي.
هل يمكن لأحد المساعدة؟
شكرا،
ستيف
discourse 07:39:04.07 INFO ==> Running database migrations
rake aborted!
NoMethodError: undefined method `register_bookmarkable' for Bookmark:Class
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.5.1/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
/opt/bitnami/discourse/plugins/chat/plugin.rb:261:in `block (2 levels) in activate!'
/opt/bitnami/discourse/lib/plugin/instance.rb:1351:in `reloadable_patch'
/opt/bitnami/discourse/plugins/chat/plugin.rb:250:in `block in activate!'
/opt/bitnami/discourse/lib/plugin/instance.rb:526:in `block in notify_after_initialize'
/opt/bitnami/discourse/lib/plugin/instance.rb:524:in `each'
/opt/bitnami/discourse/lib/plugin/instance.rb:524:in `notify_after_initialize'
/opt/bitnami/discourse/config/application.rb:230:in `each'
/opt/bitnami/discourse/config/application.rb:230:in `block (2 levels) in <class:Application>'
/opt/bitnami/discourse/lib/plugin.rb:6:in `initialization_guard'
/opt/bitnami/discourse/config/application.rb:230:in `block in <class:Application>'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:92:in `block in execute_hook'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:85:in `with_execution_control'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:90:in `execute_hook'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:76:in `block in run_load_hooks'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:75:in `each'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:75:in `run_load_hooks'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application/finisher.rb:87:in `block in <module:Finisher>'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:32:in `instance_exec'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:32:in `run'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:61:in `block in run_initializers'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:60:in `run_initializers'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application.rb:372:in `initialize!'
/opt/bitnami/discourse/config/environment.rb:7:in `<main>'
internal:/opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:38:in `require'
internal:/opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:38:in `require'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/zeitwerk-2.6.10/lib/zeitwerk/kernel.rb:38:in `require'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application.rb:348:in `require_environment!'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application.rb:506:in `block in run_tasks_blocks'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/opt/bitnami/ruby/bin/bundle:25:in `load'
/opt/bitnami/ruby/bin/bundle:25:in `<main>'
أعتقد أن الحل الأول، إذا كان هذا تحديثًا قائمًا على الويب، سيكون ترقية عبر سطر الأوامر - اتصل بمضيفك عبر ssh وقم بتنفيذ
cd /var/discourse
git pull
./launcher rebuild app
(بافتراض أن اسم ملف التكوين الخاص بك هو app.yml)
تحرير: باستثناء، يبدو أن /opt/bitnami/discourse هو المكان الأكثر احتمالاً لتثبيتك. إنها اختلافات مثل هذه التي تؤدي إلى علامة “unsupported-install” وتقديم المشورة بالاتصال بالمورد الخاص بك.
لقد قمت بفتح مشكلة دعم مع Bitnami وهم يذكرون أنها مشكلة في الأصل (asset) والذي هو في هذه الحالة صورة Discourse. لقد سألتهم عما إذا كان بإمكانهم النظر في الأمر مرة أخرى حيث أن الترقية بين إصدارات مخطط Helm الخاصة بهم يجب أن تكون قد تم اختبارها بواسطة Bitnami وأي مشاكل يرونها نأمل أن تكون قد تم حلها بين Bitnami وفريق Discourse.
سؤال - الخطأ الذي أراه يبدو أنه من المكون الإضافي للدردشة، وهو مكون إضافي مدعوم رسميًا - هل هذا يحدث فرقًا فيما يتعلق بفريق Discourse الذي ينظر في الخطأ؟
سأحاول تعطيله ثم إجراء الترقية ومعرفة كيف يسير الأمر.
هل هناك طريقة لتعطيل الإضافات الأساسية عند بدء التشغيل حتى أتمكن من اختبار ما إذا كانت إضافة الدردشة هي المشكلة؟
تسمح لي مخططات Bitnami بتمرير قائمة بالإضافات وستقوم بتشغيل الأمر RAILS_ENV=production bundle exec rake plugin:install repo={{ $plugin }} لكل إضافة أقدمها ولكن أعتقد أن هذا سيكون بالإضافة إلى الإضافات الأساسية.
سألقي نظرة على التثبيت القياسي مرة أخرى - نقوم بنشر جميع تطبيقات الطرف الثالث الخاصة بنا باستخدام مخططات Helm في مجموعة Kubernetes الخاصة بنا ولكن ربما يكون من المنطقي تقديم استثناء لـ Discourse إذا كان دعم Kubernetes و Helm بعيدًا.
تحديث سريع، يبدو أن إجراء ترقية من إصدار أقدم من 3.0.0 يسمح بإتمام الترقية بنجاح، على سبيل المثال 2.8.11 → 3.0.6 → 3.1.1
لست متأكدًا مما إذا كان هذا مجرد مصادفة أم لا، لكن محاولة الترقية من 3.0.6 مباشرة إلى 3.1.1 لا تعمل.
ومن المثير للاهتمام أن إضافة الدردشة (Chat plugin) لا تظهر في تثبيت Discourse الخاص بي بعد مسار الترقية هذا. يُعتقد أنها لا تزال تُعامل كإضافة خارجية بدلاً من كونها جزءًا من المنتج الأساسي.
هل يعرف أي شخص ما إذا كانت إضافة الدردشة صحيحة مع مسار الترقية هذا أم أن هناك خطأ فادحًا في عدم وجودها!
سأتحقق مرة أخرى من تثبيتي ولكني لا أرى العلامة حتى.
لا أرى كود الإضافة على الخادم أيضًا مع هذا التحديث بينما إذا بدأت بـ v3.0.6 أنا متأكد من أنني أفعل ذلك ولكن سأتحقق من كل شيء مرة أخرى.
@merefield - لقد تحققت للتو، إذا قمت بالترقية من الإصدار 2.8.11 إلى 3.0.6، فلن يكون المكون الإضافي للدردشة متاحًا.
كما ذكرت أعلاه، أستخدم مخطط Bitnami Helm لنشر Discourse، والذي أعرف أنه غير مدعوم، ولكن المثير للاهتمام هو أنه إذا بدأت بالإصدار 3.0.6، فإن المكون الإضافي للدردشة موجود.
لقد كنت أجرب تنويعات على هذا النهج المتمثل في تثبيت جديد يليه استعادة من النسخ الاحتياطي، ولكنه يفشل بسبب ما يبدو أنه أخطاء في ترحيل قاعدة البيانات. تتم هذه المحاولات على نشر تطوير مستقل يسهل إعادة تعيينه. يظهر سجل الاستعادة هذا على سبيل المثال:
...
[2024-02-21 12:43:12] ALTER TABLE
[2024-02-21 12:43:12] ترحيل قاعدة البيانات...
[2024-02-21 12:43:16] استثناء: /opt/bitnami/discourse/lib/discourse.rb:138:in `exec': فشل ترحيل قاعدة البيانات.
rake aborted!
StandardError: حدث خطأ، تم إلغاء هذا الترحيل وجميع الترحيلات اللاحقة:
PG::DuplicateTable: خطأ: العلاقة "sidebar_sections" موجودة بالفعل
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.1.0/lib/patches/db/pg.rb:110:in `exec'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.1.0/lib/patches/db/pg.rb:110:in `async_exec'
...