لقد قمت بتثبيت Discourse بنجاح باستخدام خدمة الحوسبة السحابية من Digital Ocean بهدف ترحيل بعض قوائم البريد الإلكتروني الخاصة بـ listserv إذا بدا لي أنني أستطيع جعل Discourse يقوم بكل ما نحتاجه. أثناء الاختبار، كنت أستخدم Thunderbird على نظام التشغيل Windows 10 لحفظ رسائل البريد الإلكتروني الجديدة التي تأتي من قائمة البريد كل بضعة أيام في مجلد على Windows، والذي أقوم بنسخه بعد ذلك إلى المجلد /var/discourse/shared/standalone/import/data/ExampleCategory1 (أو ExampleCategory2) باستخدام FileZilla. ثم أقوم بتشغيل استيراد docker وتشغيل import_mbox.sh. حتى الآن، سار كل شيء على ما يرام ويمكنني يدويًا جعل Discourse يكرر ما تم استلامه عبر قوائم البريد الإلكتروني التي اشتركت فيها.
ومع ذلك، تخيل أن لدي ExampleCategory1 و ExampleCategory2 كفئات ووضعت رسائل البريد الإلكتروني المخصصة للمجلد الأول، ExampleCategory1، في المجلد الثاني، ExampleCategory2، عن طريق الخطأ، ثم قمت بتشغيل الاستيراد قبل أن ألاحظ ذلك. (لقد حدث خطأ في السحب والإفلات على FileZilla!)
الآن لدي رسائل البريد الإلكتروني من قائمة بريد واحدة في فئة أخرى، عن طريق الخطأ.
لإصلاح هذا، قمت بحذف جميع المواضيع/المشاركات في ExampleCategory2 باستخدام واجهة الويب، وكذلك باستخدام rake destroy:topics[“ExampleCategory2”] بعد ذلك لمزيد من التأكيد، مع خطة لتشغيل import_mbox.sh مرة أخرى (لدي نسخ من جميع رسائل البريد الإلكتروني التي يجب أن تكون في كل فئة). ومع ذلك، يبدو أن Discourse يتذكر رسائل البريد الإلكتروني التي قام باستيرادها، حتى بعد حذف المشاركات، وبالتالي لن يقوم باستيرادها مرة أخرى!
كيف يمكنني فعل ذلك؟
يُظهر سجل البريد الوارد في قسم إعدادات المسؤول رسائل البريد الإلكتروني الواردة التي أنشأت المشاركات التي تم حذفها الآن، ولكن لا يوجد رابط تشعبي يأخذك إلى المشاركة (حيث تم حذفها الآن). أفترض أنه يجب علي مسح كل دليل على البريد الإلكتروني الوارد الأصلي ولكن ليس لدي فكرة عن كيفية القيام بذلك.
ما لم يكن لديك مئات الآلاف من المشاركات، فإن ما أوصي به هو مسح قاعدة البيانات والبدء من جديد. إذا كنت تريد القيام بذلك بطريقة أكثر إيلامًا ومن المحتمل أن تسبب لك مشاكل، يمكنك معرفة كيفية حذف PostCustomFields التي تحتوي على معرفات الاستيراد. إذا كنت تريد حذفها كلها، يمكنك استخدام PostCustomField.all.destroy_all، ولكن إذا كنت ستفعل ذلك، فمن الأفضل القيام بذلك بالطريقة السهلة.
عندما تقول “مسح قاعدة البيانات”، هل تقصد جميع المواضيع والمنشورات من Discourse وأيضًا جميع سجلات رسائل البريد الإلكتروني الواردة التي مرت عبر المستورد (ولكن مع ترك بنية Discourse والمستخدمين وما إلى ذلك سليمة)؟ أم تقصد قاعدة بيانات رسائل البريد الإلكتروني المستوردة، مما سيترك المنشورات الحالية في مكانها ولكنه يسمح لي بإعادة تشغيل المستورد برسائل البريد الإلكتروني القديمة؟
شكراً جزيلاً @pfaffman! يبدو أن هذا قد نجح على الرغم من أنني لست متأكداً تماماً مما حدث خلف الكواليس.
استخدمت ./launcher enter app، ثم كتبت rails c، ثم PostCustomField.where(name: \"import_id\").destroy_all وظهر الكثير من الكتابة (مع تلوين بعض الأجزاء باللون الأحمر والأخضر)، ثم عندما خرجت من rails وأعدت تشغيل import_mbox.sh، ظهرت رسائل البريد الإلكتروني الأصلية التي تم استيرادها سابقاً ثم حذفها من قبلي (عن طريق إزالة المواضيع) مرة أخرى في discourse. إذا نسخت رسائل البريد الإلكتروني إلى مجلد الفئة الأخرى، فسيتم إعادة استيرادها أيضاً، كنسخ مكررة كما كنت أشك.
إنه مجرد منتدى اختبار مع بعض الردود الإضافية كاختبارات ليراجعها الأشخاص قبل أن نقرر ما إذا كنا سننتقل أم لا إلى discourse، لذلك لم يكن مسح وإعادة التشغيل خسارة كبيرة.
لقد ذكرت أيضاً مسح قاعدة البيانات وإعادة استيراد كل شيء. ما هي أسهل طريقة للمسح؟