لدينا مكون سمة نقوم بتثبيته عبر أمر rake. يعمل المكون وإعداده عبر أمر rake بشكل مثالي. كما أن الترقية تعمل بشكل مثالي عند إجرائها من واجهة مستخدم المسؤول، مثل /admin/customize/themes/40. لكن المشكلة تظهر عندما نحاول ترقيته من سطر الأوامر باستخدام أمر rake المذكور. المخرجات هي بالضبط ما أتوقعه. ومع ذلك، لا تنعكس التغييرات. هل يبدو هذا وكأنه خطأ برمجي؟
$ rake themes:install -- '--{"discourse-login-modal": {"url": "https://github.com/example/discourse-login-modal.git", "add_to_all_themes": true}}'
discourse-login-modal: تم تثبيته بالفعل. جاري التحديث من المصدر البعيد.
النتائج:
تم التثبيت: 0
تم التحديث: 1
الأخطاء: 0
تقديم تفاصيل أكثر حول المشكلة. تشغيل أمر rake للترقية لم يُظهر أي تغيير مرئي في مكون السمة الخاص بي، ولكن بعد ذلك تعتقد واجهة مستخدم الإدارة أن الترقية قد تم تطبيقها (لم يتم التقاط لقطة الشاشة في الوقت المناسب).
بعد تغيير لاحق في مكون السمة الخاص بي، تظهر واجهة مستخدم الإدارة الآن أن ترقية متاحة، ولكن عند تطبيقها، أحصل على تحذير بأن التغييرات المحلية سيتم تجاوزها. هذه التغييرات هي بالضبط ما أردت تطبيقه عبر أمر rake install الذي لم يتم تطبيقه فعليًا.
لم أستطع معرفة سبب عدم عمل التحديث، لكن فكرت في حل بديل: إضافة أمر إلغاء التثبيت. يبدو أن إلغاء تثبيت السمة قبل استخدام أمر rake install يعمل بشكل صحيح.
هناك شيء غريب جدًا هنا. عندما يقوم ThemesInstallTask بتحديث سمة عن بُعد، يتم تحديث معلومات السمة عن بُعد بشكل صحيح (يُظهر أحدث SHA، و commits_behind يساوي 0 كما لاحظت)
لكن ملف SCSS لم يتم تحديثه في قاعدة البيانات. كنت أفترض أن المشكلة تتعلق بعدم كسر التخزين المؤقت، لكن هذا ليس هو الحال! ملف SCSS في قاعدة البيانات لا يتم تحديثه.