لدي شك في وجود واجهة برمجة تطبيقات (API) مفقودة هنا.
أصبح مستكشف البيانات (Data Explorer) مفيدًا بشكل متزايد كجزء من سير عمل المكون الإضافي (Plugin)، ولكن:
كيف نضيف استعلامات مستكشف البيانات بشكل موثوق ولكن متسامح من مكون إضافي لطرف ثالث حتى نتمكن من الفشل بلطف دون تعريض البناء للخطر، ولكن أيضًا المحاولة مرة أخرى في كل مرة في حالة تثبيت مستكشف البيانات في النهاية؟
الخيارات التي استكشفتها:
الاستقصاء للمكون الإضافي: هذا غش - تتم إضافة الاستعلامات بواسطة مكون مستكشف البيانات الإضافي نفسه.
تجهيزات المكون الإضافي (Plugin fixtures): يبدو أن هذا يمثل مشكلة لأن القطع الأثرية لمستكشف البيانات لا تبدو مضمونة التوفر أثناء تهيئة المكون الإضافي - ربما لأن مكون مستكشف البيانات الإضافي هو نفسه مكون إضافي لطرف ثالث وليس مضمونًا تحميله؟ أعتقد أنه يمكنني محاولة استخدام SQL عبر كود Ruby لتحديد ما إذا كانت الطاولة موجودة؟
الترحيلات (Migrations): لقد كتبت ترحيلات ولكنها تحتاج إلى الفشل بشكل غير ضار ولكنها لا تكتمل إذا لم يكن مكون مستكشف البيانات الإضافي مثبتًا ولا توجد طاولة استعلامات - يجب دائمًا تشغيل الترحيلات عند إعادة البناء حتى يتم تثبيت مكون مستكشف البيانات الإضافي وتوفر الطاولة حتى يمكن إضافة الاستعلامات - بهذه الطريقة من وجهة نظر المسؤول، يكون الحل مرنًا ولا يعتمد على ترتيب التثبيت. لا ينبغي أن يعرض الترحيل الفاشل البناء للخطر - هل هناك طريقة للفشل/تأجيل ترحيل دون إيقاف البناء؟
استخدام وظيفة مجدولة دورية للتحقق من وجود كل من مكون مستكشف البيانات الإضافي/جدول الاستعلامات والاستعلامات المطلوبة.
مطالبة المسؤول بإضافتها يدويًا … يا له من أمر مزعج.
أعتقد أنني قد أجرب إصدار SQL من الخيار 2 تاليًا أو ربما فاتني شيء ما؟
يمكنك الحصول على وظيفة تعمل للتحقق من تثبيتها. لن تبدأ حتى يتم تشغيل كل شيء.
ولكن للتأكد من أن الأمور ليست معطلة، يمكنك التحقق من توفر بعض استدعاءات مستكشف البيانات. أعتقد أن هذا ما أفعله للاشتراكات، ربما. (الجو مبكر ولم أفتح جهاز الكمبيوتر المحمول الخاص بي.)
لقد أضافوا رمزًا الأسبوع الماضي يتحقق مما إذا كانت وظيفة الدردشة الإضافية (chat plugin) محملة.
أعتقد أن مشكلتك هي حالة سباق (race condition)، على الرغم من ذلك.
ربما يمكنك فقط وضعه في قائمة الانتظار ليتم تشغيله مرة واحدة عند بدء التشغيل؟ وسوف يستمر في التشغيل حتى ينجح اختبار المكون الإضافي أو يموت بعد بضع دقائق؟
أعتقد أن مجرد وضع الاختبار الخاص بك في مكان ما يتم إنقاذه إذا فشل هو كل ما تحتاجه. ولكن ألا يمكنك فقط اختبار ما إذا كان شيء مثل DataExplorer.something موجودًا؟
أنا لا أعرف ما يكفي عن استخدام الترحيلات (migrations) لأخذها في الاعتبار لحالة الاستخدام الخاصة بك. يمكنك أيضًا أن يكون لديك نقطة نهاية (endpoint)، على سبيل المثال، اللوحة الإدارية (admin panel) التي تم استدعاؤها، وسوف تتحقق من تثبيت الاستعلامات الخاصة بك.
الآن بعد أن أفكر، أخشى أن المشكلة الوحيدة التي حللتها بالفعل هي إضافة المكوّن الإضافي الآخر حتى تتمكن الاختبارات من العمل.