مسار مكونات السمة

مرحباً!

أود الترقية إلى أحدث إصدار، لكنني أواجه بعض المشكلات مع بعض مكونات السمة (theme).
كلها مكونات من إنشاءاتي الخاصة، وقد نقلتها من GitHub إلى GitLab. الآن، عندما أحاول ترقية Discourse (وليس من داخل Discourse)، تظهر أخطاء لأنها لم تعد متاحة. حاولت حذفها داخل Discourse، لكنها لا تُحذف.
السؤال الآن: أين المسار لحذفها مباشرة على الخادم؟ لا أستطيع العثور عليها.

جربت وضع السلامة (safe-mode) لكنني لا أستطيع الوصول إلى المنتدى في هذا الوضع.


تعديل:

هل يوجد ملف مشابه لملف app.yml يحتوي على قائمة جميع السمات والمكونات، بحيث يمكنني حذف القائمة وإعادة بناء Discourse دونها؟

أعتقد أن هذه هي المشكلة التي تحتاج إلى حلها. الطريقة الصحيحة للتعامل مع هذا الأمر هي حذف جميع السمات ومكونات السمات التي تأتي من الموقع القديم، واستيراد سمة جديدة من مواقعها الجديدة.

إعجابَين (2)

هذا غير ممكن لأن discourse يدخل في حلقة لا نهائية. هذا هو السبب في أنني سألت عن طريقة أخرى لحذفها.
لا أستطيع حتى الدخول إلى الوضع الآمن.
إعادة التثبيت غير ممكنة أيضًا لأن النسخة الاحتياطية قديمة جدًا.
بعد تشغيل ./launcher rebuild app، لاحظت أن المنتدى غير متاح للزوار.

إذن كيف يمكنني جعله يعمل مرة أخرى؟

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

لماذا؟ ماذا يحدث بدلاً من ذلك؟

عمر النسخة الاحتياطية لا يجب أن يكون له أهمية، حتى النسخ الاحتياطية التي يعود تاريخها إلى خمس سنوات تُستعاد دون مشاكل.

بصراحة، يبدو أن مكونات السمة هي أقل ما يقلقك.

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

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

أعتقد أن تعطيل المكونات يدويًا في قاعدة البيانات هو نوع من الحلول الذي يمكن اعتباره الملاذ الأخير هنا. إنه إجراء محفوف بمخاطر عالية، لكنه قابل للتنفيذ إذا لم تكن هناك خيارات أخرى.

على الأقل، سيؤدي تعطيل المكونات إلى السماح بإكمال عملية إعادة البناء بنجاح، مما يتيح بدورها الوصول إلى واجهة المسؤول لإزالة المكونات وإعادة تثبيتها من GitLab.

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

لا يحدث شيء، الموقع غير متاح في وضع الأمان.

بالطبع يؤثر، لأن جميع المنشورات بعد آخر نسخة احتياطية مفقودة.

ولا، كان المنتدى يعمل بشكل جيد حتى حاولت إجراء التحديث قبل إزالة المكونات.

@itsbhanusharma
شكرًا لك على إجابتك. لم أكن أعرف أن السمة والمكونات تُخزَّن في قاعدة البيانات.

كيف يمكنني الوصول إلى قاعدة البيانات؟

تعديل:
حسنًا، أنا الآن في قاعدة البيانات وأعتقد أنها جدول theme_settings.
كيف يمكنني حذف جميع المكونات؟

قرأت منشورك بشكل خاطئ، ظننت أنك قلت إنها قديمة جدًا لأن الاستعادة فشلت.

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

لم يتم تخزينها في قاعدة البيانات، ومع ذلك، فإن حالة التفعيل/إلغاء التفعيل الخاصة بها مخزنة في قاعدة البيانات نفسها.

لا أتذكر الخطوات بالضبط، لكنني قمت مؤخرًا بإصلاح تثبيت معطوب بشكل مماثل.

الأهم هنا هو معرفة ما إذا كان الحاوية لا تزال قيد التشغيل. إذا كانت قيد التشغيل، فقد أتمكن من تقديم نصيحة حول كيفية محاولة تعطيل المكونات المسببة للمشكلة من قاعدة البيانات.

نعم، لا يزال الحاوية قيد التشغيل.
سيكون تعطيل المكونات مفيدًا جدًا لي.

إنها مخزنة بالكامل في قاعدة البيانات (الجداول التي تبدأ بـ theme*)

وكيف يمكنني حذفها (وليس كل شيء في الجدول)؟

من الذاكرة - شغّل هذا من وحدة تحكم Rails. اعثر على معرف (ID) للمظهر في الرابط عند عرضه.

t = Theme.find(123)
t.enabled = false
t.save

حسنًا، هذا يمثل مشكلة.
أليس من الممكن استخدام شيء مثل pgAdmin للوصول إلى قاعدة البيانات مباشرةً؟
لا أعرف معرف السمة والمكونات لأنني لم أعد أملك حق الوصول إلى منطقة الإدارة.


تعديل:
تمكنت من تحديد السمة والمكونات.
لكن تعطيلهما لا يعمل، فكيف يمكنني حذفهما باستخدام rails c؟
لقد حاولت حتى إزالتها عبر rake، لكن rake لم يستطع حذفهما أيضًا.

هل يمكنك مشاركة المزيد من التفاصيل؟ هل تظهر لك رسالة خطأ؟ إذا كان الأمر كذلك، فما هي الرسالة؟ أم لا يكون لها أي تأثير؟

rake themes:uninstall https://github.com/link/to/git.git
rake aborted!
لا نعرف كيفية بناء المهمة 'themes:uninstall' (راجع قائمة المهام المتاحة باستخدام `rake --tasks`)
هل تقصد؟ themes:install
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
(راجع التتبع الكامل بتشغيل المهمة مع --trace)

أو ما هو الأمر الصحيح لحذف الأشياء باستخدام rake؟

أحصل على قائمة بالأوامر باستخدام rake --tasks و rake -AT، لكن لا يوجد أمر لحذف سمة أو مكون.

باستخدام rails c يمكنني تعطيل سمة، لكن بعد إعادة التحميل تظهر السمة التالفة القديمة مرة أخرى.

Theme.where(user_selectable: true).update_all(user_selectable: false)
Theme.where(auto_update: true).update_all(auto_update: false)
Theme.clear_default!

هل يمكنك تجربة هذه الأوامر في وحدة تحكم Rails ومعرفة ما إذا كان بإمكانك تحميل موقعك بعد ذلك؟ إذا لم يكن الأمر كذلك، هل يمكنك محاولة إعادة البناء؟

6 إعجابات

كان علي إعادة بنائه بعد الأوامر التي قدمتها، وعمل بنجاح، وعاد المنتدى للعمل عبر الإنترنت! :+1: :slightly_smiling_face:

شكرًا جزيلاً لكم من ساعدوني!

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

مرحبًا @Osama. لقد كنت قلقًا مؤخرًا بشأن مشكلة “مكونات السمة قد تكسر إعادة البناء”.

أعتقد أننا بحاجة إلى دليل howto لمعالجة هذه المشكلة.

أعتقد أن هذا الإصلاح هنا يتعامل فقط مع حالة “الإعادة البناء مكسورة لأن رابط GitHub تالف”، أليس كذلك؟

بالنسبة لإعادة البناء المكسورة بسبب وجود خطأ في جافا سكريبت، هل توجد طريقة مماثلة لتعطيل أو إزالة السمات من سطر الأوامر يجب أن ندرجها في دليل #howto؟

تعديل: مثل الفشل عند تضمين “الشعارات البديلة”…

لقد فكّرتُ في هذا الأمر لفترة أيضًا، ورأيي هو أن هذا منطقي لبعض المجتمعات وليس للكل. بعض المجتمعات تعامل تخصيصاتها أو سماتها (themes) كجزء جوهري من هوية الموقع، ويريدون حقًا معرفة ما إذا كانت هناك مشاكل في تخصيصاتهم عند نشر موقعهم. بينما تستخدم مجتمعات أخرى تثبيتًا قياسيًا لـ Discourse مع بعض التخصيصات أو المكونات المضافة فوقه، ويمكنهم العيش بسهولة لعدة أيام دونها.

ربما يجب أن تكون خانة الاختيار التحديث التلقائي عند تحديث Discourse غير محددة افتراضيًا عند تثبيت سمة أو مكون جديد؟ هي حاليًا محددة افتراضيًا، وأعتقد أنه يجب أن تكون غير محددة، لكن هذا يحتاج إلى نقاش أوسع…

لا، فإن مقتطف الكود أعلاه (السطر الثاني على وجه الخصوص) يعطل التحديث التلقائي عند النشر لجميع السمات/المكونات المثبتة حاليًا، لذا يجب أن يصلح أي بناء مكسور بسبب التحديث التلقائي للسمات بما في ذلك أخطاء JavaScript/CSS. يجب أن يتضمن دليل howto السطر الثاني فقط.

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

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

الأوامر الموجودة في Path of theme components - #16 by Osama عملت بشكل ممتاز بالنسبة لي. أود إضافة تعليمات حول كيفية الدخول إلى وحدة تحكم Rails.

./launcher start app
./launcher enter app
rails c