GlobalSetting.use_s3؟ - خطأ

حاول حل المشكلة عن طريق ترحيل الملفات إلى S3. أول شيء هو أن الأمر يُرجع:

 GlobalSetting.use_s3?
 false

والآن السؤال: إذا كان تحميل الصور الجديدة يعمل (أي أن S3 مُعدّ بشكل صحيح)، فما الذي يسبب هذه الخطأ (أريد نقل الصور الحالية باستخدام DRY_RUN=1 rake uploads:migrate_to_s3

هل يجب عليّ ضبط شيء ما بخلاف الإعدادات في لوحة الإدارة؟
لقد حاولت تعديل ملف discourse.conf على النحو التالي:

DISCOURSE_S3_BUCKET=00000 \
DISCOURSE_S3_REGION=eu-west-2 \
DISCOURSE_S3_ACCESS_KEY_ID=00000 \
DISCOURSE_S3_SECRET_ACCESS_KEY=00000 \

لكن ذلك لم ينجح.

هذه مُنَظَّمة كمتغيرات البيئة. يجب أن تكون في قسم env: من ملف app.yml الخاص بك.

لقد قمت بتعيينه الآن (GlobalSetting.use_s3? true)

للأسف، لا تزال نفس المشكلة. الأمر rake uploads:migrate_to_s3 يُرجع خطأً

إذا لم أكن مخطئًا، فلا يمكنك تغيير الإعدادات العامة من وحدة تحكم Rails؛ ولكن يمكنك تغيير إعدادات الموقع من وحدة التحكم:

مثال بسيط لتغيير إعدادات الموقع:

pry(main)> SiteSetting.site_description
=> "My Cool Site"

pry(main)> SiteSetting.site_description = "My Great Discourse Site"
=> "My Great Discourse Site"

pry(main)> SiteSetting.site_description
=> "My Great Discourse Site"

مثال محدد يقارن بين الإعدادات العامة وإعدادات الموقع:

pry(main)> GlobalSetting.force_https
=> true

pry(main)> SiteSetting.force_https = false
false

pry(main)> SiteSetting.force_https
=> false

pry(main)> SiteSetting.force_https = true
=> true

pry(main)> GlobalSetting.force_https
=> true

pry(main)> GlobalSetting.force_https = false
NoMethodError: undefined method `force_https=' for GlobalSetting:Class
Did you mean? force_https
from (pry):61:in `__pry__'

pry(main)> GlobalSetting.force_https = true
NoMethodError: undefined method `force_https=' for GlobalSetting:Class
Did you mean? force_https
from (pry):62:in `__pry__'

عندما قمت بهذا النوع من الاختبارات من وحدة تحكم Rails، أدى ذلك إلى اعتقادي بأن الإعدادات العامة لا يمكن تغييرها في التطبيق بعد بناء التطبيق؛ بينما يمكن تغيير إعدادات الموقع في التطبيق بعد بنائه وتشغيله.

على سبيل المثال، تُحدَّد عناوين البريد الإلكتروني للمطورين في ملف YAML للحاوية، ولا يمكن تغيير هذه القيمة في التطبيق، مما يضيف طبقة أمان للموقع.

في بعض الحالات، نرى أن إعدادًا عامًا يُخصص لإعداد موقع، ثم يُستخدم إعداد الموقع في التطبيق وبالتالي يمكن تغييره؛ ومع ذلك، عندما يُستخدم الإعداد العام في التطبيق، لا يمكن تغيير هذه القيمة (أو على ما يبدو أثناء الاختبار).

يبدو، بناءً على اختباراتي المحدودة، أن هذا أحد الفروق الأساسية بين الإعدادات العامة وإعدادات الموقع.

لذلك، أعتقد أن هذا هو السبب الجوهري عندما حاول @eextra ضبط GlobalSetting.use_s3؟ true، وجد أن الأمر لم يعمل كما هو متوقع:

pry(main)> GlobalSetting.use_s3?
=> false

pry(main)> GlobalSetting.use_s3 = true
NoMethodError: undefined method `use_s3=' for GlobalSetting:Class
Did you mean?  use_s3?
from (pry):8:in `__pry__'