إضافات Discourse وإعدادات config/initializers لـ Rails 6

ما فعلته مؤخرًا، وأنا لست خبيرًا فائقًا مثل الكثيرين منكم في بناء تطبيقات Rails، هو التخطيط للمتغيرات التي يجب إعادة تحميلها دون إعادة تشغيل Rails، ثم نقل هذا الكود إلى ApplicationController.

أنا متأكد من وجود طرق أفضل للقيام بذلك، ولكن نظرًا لأن تطبيق Rails هذا محددًا هو تطبيق خلفي (back-office) ولا تشكل الأداء مشكلة:

class ApplicationController < ActionController::Base

  before_action  :set_site_settings

  private

  def set_site_settings
    @use_custom_date_format = Sitesetting.where(name: "custom_date_format").pluck(:value).last
  end

end

سأكون سعيدًا عندما أجد طريقة أفضل للقيام بذلك!

ومع ذلك، فإن نقل هذا الكود خارج مُهيئات Rails يعني أن المستخدم يمكنه تغيير إعداد الموقع بسهولة لأنه موجود الآن في قاعدة البيانات باستخدام هيكل CRUD الأساسي في Rails MVC.

بما أن التخزين المؤقت لـ SQL في Rails لا يعمل خارج نطاق الإجراء (action)، فسيكون عليّ يومًا ما أن أتعلم كيفية نقل هذا إلى التخزين المؤقت والتأكد من مسح التخزين المؤقت عندما يعالج وحدة التحكم في Rails الإجراء (على سبيل المثال، حفظ قيمة جديدة في وحدة تحكم إعدادات الموقع، وما إلى ذلك).

على أي حال، فإن تطبيق Rails الخاص بهذا العميل (خلفي فقط) ليس للاستخدام عالي الأداء، لذا فإن إضافة الاستعلام إلى وحدة التحكم في التطبيق يعمل بشكل جيد ويوفر عليّ تكرار هذا الكود في كل وحدة تحكم في المشروع حيث يُطلب إعداد الموقع هذا.