استيراد المشاركات باستخدام Markdown

لقد أعدت كتابة discourse/script/import_scripts/json_generic.rb at main · discourse/discourse · GitHub قليلاً لبياناتي الخاصة. إنه يعمل بشكل جيد ولكن لا يمكنني معرفة كيفية جعل Discourse يستخدم Markdown في المشاركات المستوردة.

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

يستخدم برنامج الاستيراد
cook_method: Post.cook_methods[:raw_html],
لقد جربت أيضًا
cook_method: Post.cook_methods[:regular],
دون أي تغيير مرئي.

كيف يمكنني جعل Discourse يتعرف على Markdown عند استيراد البيانات؟

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

حتى لو أضفت نصًا منسقًا في نهاية المنشور، فلن يتم تنسيق هذا النص؟

هل يقوم إعادة بناء HTML بشيء ما؟

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

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

إعادة بناء HTML لا يصلح ذلك.

كيف يبدو الشكل الخام في قاعدة البيانات، هل يمكنك التحقق منه باستخدام مستكشف البيانات؟ أو إخراجه في وحدة تحكم Rails.

هل يمكنك التأكد من تنفيذ مهمة إعادة الخبز في Sidekiq عند تشغيل إعادة بناء HTML؟

أو أعد الخبز باستخدام وحدة تحكم Rails لمعرفة ما إذا كان هناك أي خطأ؟

هذه مجرد اقتراحات عشوائية :person_shrugging: يبدو أن المنشور لم يتم طهيه.

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

شكرا لك!

باستخدام SELECT raw=cooked FROM posts WHERE ... يُرجع صحيحًا للمنشور.

ليس لدي أي فكرة عما يعنيه ذلك أو كيف يمكنني التحقق من ذلك :smiley: هل يمكنك إعطائي توجيهًا؟

لقد قمت بتشغيل bundle exec rake posts:rebake والمنشور هو نفسه كما كان من قبل ويتصرف بنفس الطريقة كما كان من قبل عند التحرير.

انسَ أمر ذلك، فلن يساعد ذلك على الإطلاق.

سأقوم بإنشاء منشور جديد ألصق فيه نفس المحتوى بتنسيق ماركداون مثل أحد المنشورات غير المنسقة.

أتوقع أن يقوم ديسكورس بتنسيق المنشور الجديد بشكل صحيح.

بعد ذلك، سأقارن حقل raw لكلا المنشورين؛ إما باستخدام مستكشف البيانات أو وحدة تحكم Rails.

إذا تم تنسيق أحدهما عند طبخه، والآخر لم يتم تنسيقه عند إعادة بناء HTML (الذي يعيد خبز المنشور)، فيجب أن يكون هناك اختلاف في حقل raw الخاص بهما. :thinking:

ماذا يحدث إذا قمت بتعديل المنشور؟ هل يبدو كما تتوقع؟ هل يتم عرضه بشكل صحيح إذا قمت بالتعديل والحفظ؟

لقد أخذت أحد المنشورات المسيئة، ودخلت إلى وضع التعديل الخاص به، ونسخت المحتويات وأنشأت منشورات جديدة بها. تستخدم المنشورات الجديدة تنسيق Markdown، وأرى نصًا عريضًا ورابطًا بعنوان.

في قاعدة البيانات، يكون raw الخاص بهما متطابقًا ولكن cooked الخاص بهما غير متطابق.

SELECT (SELECT raw FROM posts WHERE id = 13846) = (SELECT raw FROM posts WHERE id = 13735);t

SELECT (SELECT cooked FROM posts WHERE id = 13846) = (SELECT cooked FROM posts WHERE id = 13735);f

النقر على “إعادة بناء HTML” على المنشورات ذات التنسيق السيئ لا يحدث أي تغيير.

/logs/ لا يُظهر شيئًا في هذا الوقت (فقط تحذيرات وأخطاء أقدم).

عندما أقوم بتحريره، تبدو المعاينة صحيحة، ويتم تطبيق تنسيق Markdown هناك (على سبيل المثال، “foo”). بمجرد الحفظ، سيظل المنشور يعرض أحرف التنسيق (على سبيل المثال، “**foo**”).

هل يمكنك محاولة تشغيل

Post.update_all(cook_method: Post.cook_methods[:regular])

في وحدة تحكم Rails ثم “إعادة بناء HTML” مرة أخرى؟

لاحظ أن هذا سيؤدي إلى تحديث جميع مشاركاتك لاستخدام طريقة الطهي العادية.

إعجاب واحد (1)
/var/www/discourse$ bundle exec rails c
Loading production environment (Rails 7.0.7)
irb(main):001:0> Post.update_all(cook_method: Post.cook_methods[:regular])
=> 13809
irb(main):002:0>

تم! للأسف لم يحدث أي تغيير.


لكنني قمت بحلها. وأنا آسف لعدم ذكر الإضافات التي قمت بتثبيتها لأنها قد تتداخل…

لدي إضافة تقييمات المواضيع مثبتة وممكّنة للفئة التي تدخل إليها عمليات الاستيراد الخاصة بي.

على سبيل الصدفة، قمت بتعطيل الإضافة وحاولت مرة أخرى تعديل منشور “معطل”. الآن عند الحفظ، تم استخدام تنسيق Markdown للعرض الفاخر. قمت بإعادة تمكين الإضافة وحاولت مرة أخرى بنجاح. قمت باستيراد منشورات جديدة وهي تعرض المنشورات بشكل صحيح الآن أيضًا (باستخدام cook_method: Post.cook_methods[:regular]).

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

شكراً لكم جميعاً على الاقتراحات الرائعة والمساعدة في البحث عن المشكلة!

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

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