أريد إنشاء إضافة (plugin) تحتاج إلى جداول خاصة بها. لذا، يُعد وجود مولدات للهجرات (migrations) والنماذج (models) فكرة جيدة، لأن نسخها يدويًا من مجلد التطبيق الرئيسي قد يؤدي إلى أخطاء وهو أمر غير مريح. لذا، بدأت في إنشاء مولداتي الخاصة. بدأت بمولد الهجرات:
يمكنني الآن المضي قدمًا والقيام بنفس الشيء للنماذج والوحدات التحكمية (controllers). لكنني بدأت الآن في قراءة هذا الدليل: https://guides.rubyonrails.org/engines.html، ويبدو لي الآن أن كل هذا قد يكون تكرارًا للجهود. لماذا يختلف مولد إضافات discourse إلى هذا الحد عن مولد إضافات rails؟
مولد إضافات rails ينشئ ملف bin/rails خاص بالإضافة، مما يمكّن من استخدام مولدات الهجرات والنماذج الخاصة بها. سيكون من الرائع وجود شيء مشابه لهذا. لقد حاولت إنشاء شيء مماثل، لكنني لم أستطع جعله يعمل، لذا سلكْتُ المسار الآخر وبدأت ببساطة في إنشاء هذه المولدات الفريدة من نوعها. إذا فهمتُ بشكل أفضل الفروقات بين طريقة rails وطريقة discourse في إنشاء الإضافات، لربما تمكّنت من اتباع ذلك المسار الآخر مما قد يوفر الوقت. ربما يتمكن شخص ما من التوضيح أكثر. لماذا تُعد إضافات discourse وrails شيئًا مختلفًا، ولماذا لا تبني إحداهما على الأخرى؟
تختلف إضافات Rails عن إضافات Discourse لعدة أسباب. يجب أن تتمتع إضافات Discourse بهيكل مجلدات محدد، ويمكنها تمديد أو تجاوز كود Ember الخاص بنواة Discourse وما إلى ذلك. أعتقد أن جانب Rails في إضافة Discourse سيكون أقرب إلى إضافة Rails عامة، لكنها ليست الشيء نفسه.
علاوة على ذلك، يجب إنشاء جداول جديدة فقط إذا كانت ضرورية حقًا. تمتلك Discourse بالفعل حوالي 150 جدولًا، وليس من الشائع ألا تكتمل مهمتك باستخدام جدول واحد أو اثنين منها.
ولكن، في المستقبل، أتمنى شخصيًا وأود أن أرى ذلك يحدث. هذا سيعني أن الأشخاص يبنيون إضافات ضخمة وأكثر إثارة ويصبحون أكثر إبداعًا فيما يمكن إنجازه باستخدام Discourse.
أنا بحاجة إليها. حتى الوظائف الأساسية تتطلب جداول. أعتقد أنه من المزعج حقًا عدم وجود طريقة موثقة بوضوح لكيفية القيام بذلك. على سبيل المثال، يستخدم ملحق الاستبيانات جداوله الخاصة، لكنني لا أستطيع العثور على المولد الخاص بكيفية إنشائها. discourse/plugins/poll at main · discourse/discourse · GitHub
فائدة أخرى من التوثيق هي وجود اتفاقيات لتسمية المساحات الخاصة بالجداول/الهجرات. (لقد رأيت بعض الحلول المبتذلة التي تم التوصية بها هنا في المنتديات حول كيفية إضافة هجرات إلى ملحق)
رائع! إذن، ما هو المسار الذي يجب اتباعه؟ الاقتراب أكثر من مولد ملحقات Rails مع ملف bin/rails الخاص بك داخل مجلد الملحق، أم إصدارات خاصة لجميع المولدات (الهجرات/النماذج/التحكم)؟
تحتاج إلى قراءة مواضيع كيفية تطوير الإضافات هنا. بالنسبة لمعظم الإضافات، يمكنك استخدام الجداول الموجودة (مثل حقول المخصصة للمشاركات). هناك أوقات تحتاج فيها إلى جداول إضافية، لكن من الأفضل أن تبدأ بشيء أقل صعوبة في البداية.
قرأت دليل الإضافة للمبتدئين و هذا. هل هناك شيء آخر؟ لقد راجعت أيضًا كود بعض الإضافات. أعرف فقط أنني بحاجة إلى جداول. وهناك إضافات أخرى تستخدم جداولها الخاصة. لماذا هذا الهوس بعدم إنشاء جداول جديدة؟ هل هناك تكلفة كبيرة مرتبطة بإنشاء جداول جديدة؟ خاصة إذا كانت مُسمَّاة ببادئة اسم الإضافة في البداية، فلا أرى حقًا أي عيب في ذلك.
هذه الروابط. أنصح بشدة بقراءتها وتجربتها عمليًا قبل إبداء أي تعليق يتعلق بالتطوير. لا أقول إنك قد لا تحتاج أبدًا إلى جداول مخصصة، لكن هذه الموارد ضرورية على أي حال.
هذا الأمر مجرد تخزين بسيط للمفاتيح والقيم. لا يمكنني تخزين العلاقات بين الجداول هناك. أنا أحب SQL، وأحتاج إلى استخدامه للإضافة التي أريد إنشاؤها.
يمكنني فهم أن هذه المشكلة تنطبق على الأشخاص الذين يريدون إنشاء إضافات يمكن للأشخاص “غير التقنيين” تثبيتها وإزالتها. لستُ واحدًا من هؤلاء الأشخاص. لذا، سأكون سعيدًا إذا عدنا إلى الموضوع.
إذا كان الهدف هو إنشاء شيء ستستخدمه أنت فقط، فبرأيي الشخصي سيكون من الأفضل كتابة امتداد للمتصفح أو تطبيق سطح مكتب بدلاً من إضافة. هل هناك سبب يجعل هذا يجب أن يكون إضافة؟