لقد رأيت مؤخرًا بعض عمليات ترحيل الإعدادات (آخرها كان إزالة automatic_backups_enabled) حيث يستخدم الترحيل قيم قاعدة البيانات فقط لحساب قيمة جديدة. هذا يتجاهل أي إعدادات تم إجراؤها في discourse.conf عبر app.yml.
الكود:
INSERT INTO site_settings (name, data_type, value, created_at, updated_at)
SELECT 'backup_frequency', 3, NULL, 'NOW()', 'NOW()'
WHERE EXISTS (
SELECT 1
FROM site_settings
WHERE name = 'automatic_backups_enabled'
AND VALUE = 'f'
LIMIT 1
)
ON CONFLICT (name) DO UPDATE SET value = NULL, updated_at = 'NOW()';
والذي يتجاهل automatic_backups_enabled = false في discourse.conf ونتيجة لذلك، لا يبقي النسخ الاحتياطي معطلاً عند وجود هذا الإعداد.
لقد أبحر هذا السفينة المحددة، ولكن قد يكون من الجيد أن نتذكر أن هذا النمط يسبب مشاكل مع الإعدادات التي يتم تجاوزها عالميًا.
لا أعتقد أنك تريد الاعتماد على متغير بيئة وقت الإنشاء أيضًا؟ هذا يجعل من الصعب فصل خطوة متغير البيئة إلى discourse.conf وخطوة نشر الحاوية الفعلية. في عالمي الآخر (PHP/Laravel) يُنظر إلى هذا على أنه نمط غير مرغوب فيه.