تم تثبيت Discourse بنجاح على Digital Ocean، ويعمل كل شيء بشكل ممتاز، لكننا لا نستطيع بأي حال من الأحوال العثور على ملفات Discourse الفعلية. أردنا تجربة بعض التعديلات وبناء بعض الإضافات، لكننا لم نتمكن من العثور على أي ملفات. استخدمنا Filezilla لتسجيل الدخول إلى الموقع، ومع ذلك، لم نتمكن من العثور على أي من ملفات تطبيق Discourse في أي مكان، مثل discourse/app. دخلنا إلى مجلد var/discourse ولم نجد شيئًا، ثم انتقلنا إلى var/discourse/containers ولم نجد شيئًا أيضًا. قمنا بتسجيل الدخول عبر SSH وتشغيل .launcher ثم الدخول إلى app، وظهرت لنا الملفات في الطرفية موجودة في var/www، لكن هذا المسار غير موجود عند تسجيل الدخول إلى الخادم. جربنا var/lib/docker/containers ولم نجد شيئًا. أين بالضبط توجد ملفات Discourse؟ شكرًا لكم.
هذه هي طريقة عمل Docker، حيث توجد الملفات الفعلية داخل حاوية Docker، وبالتالي تكون “غير مرئية” عند استخدام Filezilla.
إذا كنت ترغب في اختبار تعديلات على Discourse، مثل الإضافات والموضوعات، فلن تتمكن من القيام بذلك في تثبيت الإنتاج.
للموضوعات، راجع: Beginner's guide to using Discourse Themes
للإضافات، راجع: Developing Discourse Plugins - Part 1 - Create a basic plugin
هل هناك طريقة أخرى لتثبيت هذا غير استخدام Docker؟ لقد قرأت جميع الأدلة، لكن من الصعب نوعًا ما التطوير مع الملفات المخفية.
المنهجية تختلف اختلافًا كبيرًا عن تطبيقات PHP في التسعينيات، حيث كان من الطبيعي تحرير الملفات على خوادم الإنتاج باستخدام FTP.
من المفترض أن تكون التغييرات في سلوك Discourse مشاريع منفصلة، مقيمة في مستودع git خاص بها، وأن تستفيد من واجهات برمجة التطبيقات (APIs) الحالية للإضافات والمواضيع.
لذا، لنفترض أنك تريد إضافة حقل إضافي إلى محرر الموضوع حيث يضيف المستخدم اللون المفضل لديه. ستقوم بإنشاء إضافة Discourse جديدة وفقًا للدليل المخصص للمبتدئين في إنشاء إضافات Discourse (الجزء 1) على https://meta.discourse.org/t/beginners-guide-to-creating-discourse-plugins-part-1/30515، ثم تضعها على GitHub في مستودع يُسمى discourse-favorite-color وتقوم بتثبيتها في نسختك باستخدام Install plugins on a self-hosted site
حسناً، فهمت. سيتعين عليّ التأقلم مع هذه الطريقة الجديدة في التطوير. مجرد فضول، هل نحتاج في كل مرة نضيف فيها إضافة إلى تشغيل أمر ./launcher rebuild app؟ ثم نفعل ذلك مرة أخرى عند تعديل الإضافة؟
نعم.
ومع ذلك، يجب أن يحدث ذلك بشكل نادر، لأن هذا هو التثبيت الخاص بالإنتاج.
لأغراض التطوير والاختبار، يخبرك الجزء الأول من الرابط التالي Developing Discourse Plugins - Part 1 - Create a basic plugin بإعداد “بيئة تطوير” حيث يمكنك إجراء التغييرات واختبارها بمجرد تحديث متصفحك.
هذا ما أفعله أنا، رغم أنه يمكنك أيضًا إجراء ترقية عبر واجهة الويب في /admin/upgrade.
أيضًا، تتيح لك التثبيت المكون من حاويتين إجراء الترقية على النحو التالي:
./launcher bootstrap web_only
./launcher destroy web_only; ./launcher start web_only
لذلك يكون موقعك معطلاً فقط لفترة الوقت الذي يستغرقه خادم جديد للبدء (حوالي دقيقة).