مهام Rake: rebake_incremental (طلب ميزة)

أيها المطورون في Discourse،

الموضوع: أمر rake posts:rebake (ميزة مستقبلية)

rake posts:rebake                                                      # تحديث كل منشور بأحدث تنسيق ماركداون
rake posts:rebake_match[pattern,type,delay]                            # إعادة معالجة جميع المنشورات المطابقة لنص/تعبير نمطي، مع إمكانية تأخير الحلقة اختياريًا

أ. سيكون رائعًا وجود ميزة إعادة معالجة تتيح للمستخدم إعادة المعالجة فقط إذا كان معرف الموضوع (أو معرف المنشور) أكبر من عدد صحيح معين

rake posts:rebake_incremental['topic_id', 34567]      # إعادة المعالجة إذا كان معرف الموضوع >= 34567
rake posts:rebake_incremental['post_id', 364123]      # إعادة المعالجة إذا كان معرف المنشور >= 364123

الأسباب:

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

(2) عند العمل على ضبط نصوص من منتديات قديمة إلى Discourse في مهام الهجرة، مثل ضبط الأحرف الخاصة في المنتدى القديم لتعمل مع ماركداون في منتدى برمجي، أو ضبط ترميز BBCode المتكرر في المنتديات القديمة، يكون من الجيد إعادة المعالجة، مثلًا، لآخر 1000 منشور (بدلاً من قاعدة البيانات بأكملها).

ب. حتى أكثر مرونة من أ (تحديد عامل مقارنة)

rake posts:rebake_incremental['topic_id', '>=',34567]      # إعادة المعالجة إذا كان معرف الموضوع >= 34567
rake posts:rebake_incremental['post_id','<', 364123]      # إعادة المعالجة إذا كان معرف المنشور < 364123

عام:

rake posts:rebake_incremental[target, operator, id]  

حيث:

  • الهدف هو إما معرف الموضوع أو معرف المنشور
  • العامل هو عامل مقارنة حسابي
  • المعرف هو عدد صحيح، إما معرف الموضوع أو معرف المنشور

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

3 إعجابات

هناك أيضًا مهمة rake أخرى لإعادة الخَبز:

rake posts:rebake_uncooked_posts

يمكنك تنفيذ كل ما طلبته وحتى أكثر من ذلك بتشغيل الأمر التالي في وحدة تحكم Rails قبل تنفيذ مهمة rake المذكورة أعلاه.

DB.exec(<<~SQL)
  UPDATE posts
  SET baked_version = NULL
  WHERE topic_id >= 34567
SQL

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

13 إعجابًا

ممتاز!!!

شكرًا لك يا @gerhard!!

أتفق تمامًا بنسبة 1000%

أحب هذه المهمة والطريقة. إنها رائعة جدًا!

شكرًا لك مرة أخرى!!


ملاحظة: من المزايا العظيمة في هذه الطريقة التي اقترحها @gerhard أنه يمكننا خبز آخر 1000 منشور (على سبيل المثال)، وإذا أعجبنانا النتائج بعد الخبز، ثم ننتقل لخبز باقي الـ 999,000 منشور. هذه حقًا ميزة ثمينة.

شكرًا لك مرة أخرى


5 إعجابات