سؤال

لدي تهيئة يقوم بإعداد افتراضي يستخدم في جميع أنحاء التطبيق. القيمة هي نموذج activerecord، وأنا في الأساس التخزين المؤقت له لمدى عمر التطبيق:

@@default_region = Region.find_by_uri("whistler")

يضمن السجل في قاعدة البيانات: إنها بيانات لاعبا استكياها والتي تتم الإشارة إليها بواسطة نماذج أخرى. هذا يعمل بشكل جيد، إلا في بيئة الاختبار حيث يتم تطهير قاعدة البيانات قبل تشغيل كل اختبار. (أشغل على قضبان حافة وأعتقد أن هذا السلوك الأخير: اعتدت أن أكون قادرا على إدراج البيانات يدويا واحتفظ بها بين تشغيل الاختبار.) لدي أيضا السجل في بلدي regions.yml ملف لاعبا اساسيا، ولكن لم يتم تحميل التجهيزات إلا بعد الانتهاء من التهيئة.

ما هي الطريقة الصحيحة للتعامل مع مثل هذا التبعية على بيانات التثبيت؟ أم أن هناك طريقة أفضل لتنظيم هذا؟ أفضل عدم استخدام Poes_filter لأنه لا يوجد أي معنى لإعادة تحميل هذا على كل طلب: لن يتغير إلا في نشر مختلف.

هل كانت مفيدة؟

المحلول

سأضع شيئا مثل هذا في المنطقة.

def self.default_region
  @@default_region ||= Region.find_by_uri("whistler")
end

ثم يمكنك الوصول إليها كمنطقة.Default_region أينما كنت في حاجة إليها، ونتطلع مرة واحدة فقط - المرة الأولى التي يطلق عليها - وبعد ذلك، ستكون المباريات في مكانها.

نصائح أخرى

ليس على دراية حقا بالراغي أو القضبان ... ولكن لماذا لا تحاول سيناريو "تحميل كسول"؟ في الأساس، لديك وظيفة عالمية من شأنها أن تحقق لمعرفة ما إذا كانت البيانات قد تم تحميلها، وإذا لم يكن الأمر كذلك، انتزعها من قاعدة البيانات، ثم ذاكرة التخزين المؤقت عليه. وإذا تم تخزين مؤقت بالفعل، فقط عدها.

بهذه الطريقة، لن تحاول الضغط على قاعدة البيانات حتى يتم استدعاء هذه الوظيفة لأول مرة ويجب تهيئة كل شيء بحلول ذلك الوقت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top