في ملف app.yml الخاص بي، لدي العديد من العبارات (حوالي 80) مثل ما يلي:
- exec: rails r "SiteSetting.some_setting=false"
- exec: rails r "SiteSetting.some_other_setting=0"
- exec: rails r "SiteSetting.a_third_setting=0"
يبدو هذا غير ذكي (جعل كل عبارة بشكل منفصل). هل توجد طريقة أفضل لتحقيق ذلك؟ هل أتراكم عبئًا زائدًا غير ضروري في عملية إعادة البناء؟ أم أن هذه هي الطريقة الصحيحة للقيام بذلك؟ شكرًا مقدّمًا.
إذا قمت بفحص قاعدة بيانات PostgreSQL الخاصة بـ Discourse، فستجد أن هناك جدولًا للإعدادات الخاصة بالموقع، وأن معظم هذه الإعدادات يتم حفظها في قاعدة البيانات.
بما أنك لم تحدد الإعدادات المحددة التي تهتم بها، فإن تقديم رد دقيق يكون صعبًا؛ ولكن بشكل عام، بمجرد إعداد هذه الإعدادات في قاعدة البيانات، لا يوجد سبب وجيه لإعادة تعيينها في ملف yml عند كل إعادة بناء.
بالطبع، هذا لا ينطبق على أي إعدادات مخصصة للموقع لا يتم حفظها في قاعدة البيانات.
أتمنى أن يكون هذا مفيدًا.
a_server:~# docker exec -it data bash
a_server-data:/# su postgres
postgres@a_server-data:/$ psql discourse
psql (12.2 (Debian 12.2-2.pgdg100+1))
Type "help" for help.
discourse=# \dt *site*
List of relations
Schema | Name | Type | Owner
--------+---------------+-------+-----------
public | site_settings | table | discourse
public | sitemaps | table | discourse
(2 rows)
discourse=# select count(id) from site_settings;
count
-------
141
(1 row)
discourse=#
إذا قمت بمقارنة تعليمات إعدادات الموقع في ملف yml الخاص بك مع قاعدة البيانات، فستتمكن من تكوين فكرة جيدة عن أي من تعليمات إعدادات الموقع في ملف yml الخاصة بك هي زائدة عن الحاجة.
لا يبدو ذلك منطقياً إلا إذا كان هدفك هو إنشاء مجموعة من المواقع المختلفة التي تحتوي على هذه الإعدادات، بحيث يتم حذف هذه الإعدادات في إعادة البناء التالية إذا قام شخص ما بتغييرها في واجهة المستخدم.
ما هي المشكلة التي تحاول حلها من خلال تعيين هذه الإعدادات في ملف yml؟