يبدو لي بداية جيدة. الآن، أحتاج فقط إلى تعلم كيفية القيام بأشياء رائعة معها.
خطتي الأولى هي كتابة كود للاستعلام عن قاعدة البيانات للحصول على قيمة أحتاجها من جدول post_custom_fields واستخدامها في صفحة المواضيع كجزء صغير طلبه فريق الموديريتور المخضرم لدينا.
غداً سأسحب المشروع من git وأبدأ في البحث عن أمثلة لكود قاعدة البيانات من الإضافات الأخرى لتبدأ بي، وأرى إلى أي مدى يمكنني التقدم.
ما زلت أحاول تعلم الإضافات الخاصة بـ Discourse، عدت اليوم إلى مولد الإضافات هذا؛ وحاولت ذلك في بيئة التطوير على macOS، حيث يعمل التطبيق بشكل صحيح، وقد قمت بالكثير من الدراسات حول Ruby و Rails بالإضافة إلى تطوير إضافات صغيرة للتعلم:
# cd /var/Tim/Discourse/plugins
# rails g plugin DiscourseRacoon
# bundle exec 'rails s'
يبدو أن كل شيء يسير على ما يرام، ويتم تثبيت الإضافة بنجاح:
هل أنا مخطئ في افتراضي أن مسارات الإضافة والمتحكم يجب أن تعمل بشكل افتراضي (OOTB) بعد إنشاء الإضافة الأساسية، وهي في هذه الحالة DiscourseRacoon؟
ذهبت إلى مراجعات متعددة عبر الإنترنت، والتي أشارت إلى أنه يجب علينا التحقق من وجود المسار؛ لذا قمت بفحص routes.rb ووجدت أن المسارات محددة هناك؛ كما قمت بفحص discourse_racoon_controller.rb، والمتحكم يحتوي على دالة index (إجراء).
أعتذر، ما زلت أواجه صعوبة في تطوير الإضافات الأكثر إثارة لـ Discourse. ما الذي أفعله خطأ؟ هل لديك أي اقتراحات حول ما يجب أن يكون خطوتي التالية لتصحيح هذا الخطأ؟
أفترض أن هذا اصطلاح في Rails يجب أن أتعلّمه؟ حيث يتم الوصول إلى جميع المسارات المحددة بعلامات سفلية باستخدام شرطات؟
DiscourseRacoon::Engine.routes.draw do
get "/" => "discourse_racoon#index", constraints: DiscourseRacoonConstraint.new
get "/actions" => "actions#index", constraints: DiscourseRacoonConstraint.new
get "/actions/:id" => "actions#show", constraints: DiscourseRacoonConstraint.new
end
لقد قمت بتوليد إضافة “مرحبًا بالعالم” باستخدام هذا المولد، وأضفت العديد من عبارات “الكتابة إلى ملف” بلغة Ruby، وراقبت دورة حياة Rails. اكتشفت أن وحدات التحكم في Rails لم تكن تعمل كما هو متوقع (لم تسجل أي شيء، مما يشير إلى أنها كانت تُتجاهل).
بعد عملية تصحيح الأخطاء، نجحت في جعلها تعمل كما هو متوقع عن طريق نقل وحدات تحكم Rails إلى مجلد أعلى.
بالإضافة إلى ذلك، أضفت وحدة تحكم وقالب JavaScript/Ember للصفحة الرئيسية، وأضفت بعض كود HTML و CSS إلى جميع القوالب، وأضفت كود JavaScript لقراءة ملفات تعريف الارتباط (Cookies) وتمييز القوالب.
على سبيل المثال، بعد إجراء بعض التغييرات على الإضافة المولدة بواسطة مولد إضافة Rails:
للاطلاع على التفاصيل الكاملة ولقطات الشاشة، يرجى زيارة:
في الختام، أود أن أشكر @j.jaffeux على مولد إضافة Rails هذا. لقد استمتعت كثيرًا بتصحيح أخطاء وحدات تحكم Rails واستمتعت بتعديله لتقديم المزيد من الكود لفحص كل من دورة حياة Rails وقوالب/وحدات تحكم JavaScript.
آمل أن تساعد تعديلاتي أي شخص آخر، مثلي، لا يزال يتعلم أساسيات تطوير الإضافات في Discourse في أوقات فراغه ويرغب في استخدام مولد إضافة Rails.
انظر أيضًا:
حاليًا، أستمتع حقًا بتصحيح وإصلاح الإضافات المعطلة كجزء من عملية تعلم تطوير إضافات Rails و Discourse
حاولت في البداية تحميل وحدات تحكم Ruby باستخدام عبارات load في ملف plugin.rb, لكنها لم تسجل كما هو متوقع.
عند اختبار وحدات تحكم Ruby، استخدمت عبارات Ruby لتسجيل البيانات في نظام الملفات، ثم شغّلت أمر tail -f على ملف السجل لاختبار كيفية تفعيل وحدات التحكم.
للمتعة، أنهيت يومي أمس بكتابة كود لقراءة جميع متغيرات البيئة (ENV) من العمليات وتخزينها في كوكيز باستخدام وحدة تحكم Rails، ثم كتابتها في التطبيق عبر وحدة تحكم Ember.