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

مرحبًا @fzngagan، أنا بالتأكيد لستُ “خبيرًا في Ruby” ولديّ خبرة أقل بكثير مع Rails مقارنة بمعظم مطوري إضافات ديسكورش؛ ولكن مع ذلك: ربما يمكنك الاعتماد على شيء مشابه لهذا في المستقبل إذا احتجت إلى إعادة تحميل الملفات في إضافتك دون إعادة تشغيل التطبيق في بيئة الإنتاج (أو التطوير):

after_initialize do

  # غيّر السطر التالي إلى المتحكم الذي تفضّله
  # أو استخدم متحكم التطبيق إذا لزم الأمر

  ApplicationController.class_eval do
    before_action :do_my_stuff

    def do_my_stuff
      load File.open(FAIZAANS_FAV_FILE)
    end
  end
end

هذا سيعيد تحميل الملفات كما هو متوقّع.

أنا أستخدم هذا حاليًا في إضافة على النحو التالي، ويعمل كما هو متوقّع:

after_initialize do

  Admin::AdminController.class_eval do
    before_action :do_neo_plugin_info

    def do_neo_plugin_info
      load File.open(PLUGIN_LOGIC)
    end
  end
end

أستخدم هذا الكود حاليًا في إضافة أعمل عليها بين الحين والآخر، وهي تعرض أسماء الحاويات التي يتم تحليلها من ENV["DATA_NAME"]، بالإضافة إلى مساحة القرص التي يتم تحليلها من خلال بعض أكواد النظام باستخدام df وgrep.

في عروض الإدارة لدينا:

كما ذُكر، لستُ خبيرًا في Ruby بأي حال من الأحوال؛ لكن هذه الطريقة تعمل بالنسبة لي.

نظرتُ إلى كود الإضافة في instance.rb، وبعد بعض المحاولات والأخطاء المختلفة، قررتُ الاعتماد على كود class_eval المذكور أعلاه، وقد لا يكون هذا هو الطريقة المفضّلة للقيام بالأشياء، لكنه بالتأكيد يعمل بالنسبة لي.

على سبيل المثال، إذا قمتُ بإعادة تحميل الصفحة بعد حذف العديد من نسخ احتياطي ديسكورش، فإن مؤشر مساحة القرص يتغيّر كما هو متوقّع.