أولاً، شكرًا كبيرًا للمطورين على إنشاء تطبيق رائع كهذا!
أرجو أن أتمكن من الحصول على توضيح لأمر أجد نفسي مشوشًا بشأنه. كنتُ أفهم أن الطريقة الصحيحة لاستخدام أوامر $ rake db:* في Rails 6 للتجهيز الأولي هي عبر $ rake db:prepare، لكن Discourse لا يتم تهيئته بشكل صحيح إذا قمت بتشغيل $ rake db:prepare بمفرده. ومن خلال المناقشات على Meta/هنا؛ أرى أن أمر prepare يُستخدم فقط لتهيئة بيانات الاختبار وربما في بعض مهام الخلفية التي يتم تشغيلها.
هل يمكن لأحدكم مساعدتي في فهم ما إذا كان $ rake db:migrate هو الأمر الوحيد الذي أحتاجه لتهيئة قاعدة بيانات Discourse فيما يتعلق بالهجرات أو التهيئات، ولماذا يكون الأمر كذلك؟
أعتقد أن عملية البناء يجب أن تعتمد افتراضيًا على تنفيذ db:create، لأنه ما لم أفتقد بعض الوظائف في مثيلي، يبدو أن المثيل يعمل بشكل صحيح مع تجميع الأصول فقط (أو شيء مشابه) والهجرة.
بعد بعض البحث، يبدو أن هذا يوفر المزيد من المعلومات حول الإجابة التي كنت أبحث عنها:
مهام rake الخاصة بـ Discourse تتجاوز مهمة rails db:migrate. أعتقد أنه يمكن اعتبار هذا غير تقليدي في تطبيقات Rails، على سبيل المثال هذا الطلب: Add db:prepare rake task. by robertomiranda · Pull Request #35768 · rails/rails · GitHub. عند النظر في ما تفعله db:prepare، فإنها تصل مباشرة إلى ActiveRecord وتنفذ إعداد قاعدة البيانات المتوقع، لكنها لا تستدعي المهام الفردية الأخرى الضرورية db:* التي قد يتوقع المرء استدعاءها لأنها تتجاوز أجزاء يُفترض أن تكون من المصدر الأصلي.
وملاحظة جانبية: الطريقة التي قمت بها حاليًا بإعداد Discourse لا تسمح لمستخدم قاعدة بيانات Discourse بالحصول على امتيازات مرموقة أبدًا، لذا فإن الحاجة إلى القيام بأشياء مثل db:drop و db:create بعد البناء ستبدو أنها تتطلب تغييرًا طفيفًا في التكوين عما قمت بتنفيذه.