إضافة مُهيئ (Datadog APM) في إضافة مخصصة؟

مرحباً بالجميع! هذا أول منشور لي، آسف إذا اخترت القسم الخطأ.

أود إعداد discourse لـ Datadog APM instrumentation، وقد بدا لي من المنطقي استخدام ملحق مخصص لهذا الغرض (متبعين فكرة discourse-prometheus).

الطريقة المعتادة لإعداد تطبيق Rails لـ APM هي استخدام ملف تهيئة (initializer) - وأنا لست (بعد) على دراية عميقة بنظام الإضافات في discourse. هل توجد طريقة لتحميل مثل هذا الملف في وقت مبكر من عمر تطبيق discourse باستخدام نظام الإضافات الحالي؟ إذا لم تكن هناك طريقة، فما هي الخيارات الأخرى المتاحة؟ أفضل عدم الاضطرار إلى إنشاء نسخة من التطبيق بالكامل فقط لإضافة ملف تهيئة واحد :sweat_smile:

اتبع نفس النمط في إضافة Prometheus:

من المرجح أن تكون after_initialize هي المكان الذي تريد وضع هذا الكود فيه.

شكرًا لك على الرد السريع @sam! سأجرب ذلك وأخبرك بكيفية سير الأمر.

@سام جربت ذلك، لكن يبدو أن مكتبة ddtrace هذه تتوقع القدرة على العمل أيضًا في before_initialize. لكن يبدو أن before_initialize ليست دالة صالحة في plugin.rb. هل توجد خيارات أخرى لتمكين إضافة من العمل في مرحلة أبكر من دورة حياة التطبيق؟

الخطأ:

[2020-06-30T15:30:40.348519 #2313] ERROR -- ddtrace: [ddtrace] (/workspace/plugins/discourse-datadog/gems/2.6.2/gems/ddtrace-0.37.0/lib/ddtrace/contrib/patcher.rb:43:in `on_patch_error') فشل في تطبيق تصحيح Datadog::Contrib::Rails::Patcher. السبب: لا يمكن تعديل مصفوفة مجمدة الموقع: /home/vscode/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-6.0.3.1/lib/action_dispatch/middleware/stack.rb:102:in `insert'

خطوتي التالية ستكون عدم استخدام أدوات القياس التلقائية التي تُطبّق عبر “المُصلحات” الخاصة بهذه المكتبة، بل دمج جزء من منطق القياس الفعلي داخل الإضافة نفسها، على غرار ما فعلته مع discourse-prometheus. أعتقد أن هذا منطقي أيضًا للتكامل مع بعض التفاصيل الخاصة بمنصة discourse. كنت آمل فقط في وجود طريقة للاستفادة من السحر الذي لم أره بعد.

@راف، هل نجحت في تشغيل هذه الإضافة من قبل، حتى لو كان ذلك فقط مع التجهيز التلقائي؟