أبحث عن استيراد حوالي 600 عنوان بريد إلكتروني من قائمة بريدية إلى منصة Discourse، بهدف تعيين الجميع تلقائيًا لمتابعة فئة الإعلانات، والتي ستؤدي في جوهرها نفس الوظيفة الأساسية للقائمة البريدية.
أفهم أنه كجزء من عملية الاستيراد، يمكننا (وأنا أعلم أن هناك نصوصًا برمجية متضمنة، وسيحتاج مطوري إلى تنفيذ ذلك) إجبار جميع الأشخاص المستوردين على متابعة فئة الإعلانات، بحيث يتلقون حتمًا رسائل البريد الإلكتروني لكل منشور (ما لم يتوقفوا عن متابعتها يدويًا). هل هذا صحيح؟
الأقل وضوحًا بالنسبة لي هو تجربة المستخدم للمستخدمين المستوردين. سيكون لكل منهم حساب، لكنني أفترض أنهم لن يتمكنوا من تسجيل الدخول حتى يحددوا كلمة مرور، وعند أول زيارة للموقع، ستطلب منصة Discourse منهم القيام بذلك. هل هذا صحيح؟
وماذا لو لم يحدد أحد كلمة مرور على الإطلاق؟ (فمعظمهم لا يدركون أنهم يمتلكون الآن حسابات في Mailman؛ لذا كان هناك اعتراض على ضرورة امتلاك حساب آخر. آه.) إذا لم يقم شخص ما بزيارة الموقع أبدًا ولم يسجل الدخول، فهل سيظل يتلقى رسائل البريد الإلكتروني للمواضيع والمنشورات في فئة الإعلانات؟
بالنسبة لأي شخص قام بذلك، ما نوع قضايا الدعم التي اضطررت إلى التعامل معها بعد الاستيراد؟
إذا كان لديك بالفعل علاقة معاملة مع هؤلاء الأشخاص، أي أنك تنقلهم إلى منصة جديدة، فهناك طرق لتقصير عملية إنشاء المستخدم. هذه الطرق مخصصة لمسؤولي الأنظمة المتقدمين، ولكن إليك بعض الأفكار من سطر الأوامر (rails console) التي قد تنجح:
من خبرتي، سيؤدي هذا إلى إنشاء مستخدم جديد بالتفاصيل التي قدمتها، وتفعيل حسابه ليتمكن من استقبال البريد الإلكتروني، ثم إرسال بريد إلكتروني إليه يخبره بأنه تم إنشاء حساب له على موقع Discourse الخاص بك، مع تزويده برابط لإعداد حسابه:
تم إنشاء حساب جديد لك في اسم موقع Discourse الخاص بك
هناك أشخاص أكثر ذكاءً مني في هذا الموضوع، لكنني أعتقد أنه نظرًا لأنك تشغّل الأمر u.activate();، فإنهم يكونون قد تم تفعيلهم بالكامل بالفعل، وأن الشيء الوحيد الذي يقومون به عبر البريد الإلكتروني هو تغيير كلمة المرور من السلسلة العشوائية الأولية التي لا يعرفها أحد.
هناك فكرة مفادها أن المستخدمين غير النشطين يتوقفون في النهاية عن استلام رسائل البريد الإلكتروني، لكنني لست متأكدًا مما إذا كان ذلك سيُطبّق هنا على الفئات “المشاهدة تلقائيًا”، حيث لم أفكر في الأمر إلا فيما يتعلق بمستلمي الملخصات. آمل أن يتمكن شخص آخر من الإجابة على ذلك.
كنت أخشى أن تقول ذلك. لقد أثبتت طريقة وحدة تحكم Rails أنها تتجاوز بكثير قدراتي الإدارية (لم يكن Rails مثبتًا حتى على VPS الخاص بنا، ولا أستطيع أن أرى كيف يمكنني استيراد 600 عنوان بهذه الطريقة على أي حال)، لذا سأضطر إلى استدعاء مطورنا. سأطلب منه التحقق.
شكرًا لك! اضطررت إلى إضافة sudo su قبل السطر الثالث للحصول على إذن للاتصال بـ Docker daemon، ولكن بعد ذلك نجح الأمر وتمكنت من تنفيذ الأسطر في سكربت Rails المذكور أعلاه وإنشاء مستخدم تجريبي. رائع!
لكن كيف يمكن توسيع هذا السكربت ليعمل مع قائمة مكونة من 600 عنوان بريد إلكتروني؟ يبدو تشغيله 600 مرة… مرهقًا.
بما أن لا أحد هنا لديه خبرة في Ruby، فقد اخترنا إنشاء ملف كبير يحتوي على جميع الأوامر ولصقها في وحدة تحكم Rails. يبدو أن الأمر يعمل، باستثناء وجود أربع أخطاء في Sidekiq (من بين أول 50 استيرادًا للاختبار)، ولا أعرف ما الذي يجب فعله بها أو ما تعنيه. هل تم إنشاء المستخدمين؟ أم أنهم لم يستلموا رسالة البريد الإلكتروني الترحيبية فقط؟ وبما أن عمليات إعادة المحاولة تفشل، فهل يجب أن أحذف هذه الأخطاء وأنتقل إلى ما يلي؟
من الصعب عليّ تخيل كيف يمكن أن يكون user_id غير صالح.
ربما يكون ذلك مناسبًا، لكنك ستحتاج إلى تحديد المستخدمين الذين فشلوا ولماذا. هل ظهرت أخطاء عند لصق الأوامر؟ إذا لم تتمكن من معرفة ذلك، فستحتاج إلى مقارنة المستخدمين الموجودين حاليًا بتلك الذين تتوقع وجودهم لمعرفة الفرق.
إذا لم تكن لديك وسيلة سهلة للتمرير إلى الخلف عبر السجلات، فمن الأفضل أن تعمل في دفعات أصغر حتى تتمكن من متابعة تقدمهم بسهولة أكبر.
لم أتم إخطاري بهذا إلا بعد فترة طويلة، لذا لم يكن هناك أي طريقة للعودة. من الممكن أن تحدث هذه الأخطاء عندما يكون عنوان البريد الإلكتروني المستورد موجودًا بالفعل في النظام—يمكنني اختبار ذلك. جميع المستخدمين الذين توقعت أن يتم إنشاؤهم قد تم إنشاؤهم.
لكن ما لا أستطيع فهمه هو ما إذا كانت هناك أي صلة بين المعلومات الموضحة في لقطة الشاشة هذه وأي شيء يمكنني البحث عنه في Discourse. هل يمكن ربط الرموز البريدية (email_tokens) بأي معلومات أخرى؟
يبدو أنني سأستمر في القيام بذلك على دفعات صغيرة لأرى ما إذا كان بإمكاني ربط خطأ بأحد هذه الرسائل.
اتضح أن هذه الأخطاء ظهرت في كل مرة حدث فيها خطأ في الاستيراد، مثل أسماء المستخدمين التي تتجاوز 20 حرفًا، أو وجود حرفين خاصين متتاليين في اسم المستخدم، أو ربما أن البريد الإلكتروني مستخدم بالفعل (لاحظت نتائج غير متسقة في هذه الحالة). قمت فقط بإصلاح كل مشكلة ثم انتقلت إلى التالية، وحذفت جميع الأخطاء من Sidekiq في النهاية.