أين أحتفظ بمصدر المستورد المخصص؟

مرحباً،

لقد كنت أعمل على مستورد مخصص حتى أتمكن من استيراد البيانات من منتدى Woltlab الخاص بنا إلى Discourse. لقد فعلت ذلك عن طريق تشغيل Discourse مباشرة على جهاز التطوير الخاص بي بدون Docker، والآن لدي مجموعة من الملفات في script/import_scripts/ تحتوي على كود الترحيل الخاص بي. تعيش هذه الملفات في نسخة متفرعة من مستودع Discourse الرسمي على GitHub في الوقت الحالي.

أود الترحيل إلى تثبيت رسمي يعتمد على Docker الآن، ولكن سأحتاج إلى كود المستورد الخاص بي ليكون متاحًا في التثبيت الجديد لبعض الوقت، حيث ستحتاج عملية الترحيل إلى أن تتم بشكل متداول. إذا أمكن، أود الاحتفاظ بكود المستورد في مستودع منفصل وجعله متاحًا في تثبيت الإنتاج بطريقة نظيفة.

معرفتي بـ Rails محدودة، لذلك قد أكون أغفل نهجًا واضحًا. هل يمكن لأي شخص أن يشيرني في الاتجاه الصحيح؟

شكرًا!
هانز

3 إعجابات

في هذه الحالة، أقترح أحد الخيارات التالية:

  1. أثناء الترحيل المتداول، قم ببناء نسختك على نسختك المتفرعة (fork). إذا كنت ترغب في تضمين وظائف جديدة، فما عليك سوى مزامنة نسختك المتفرعة مع المصدر الأصلي (upstream) بشكل منتظم. عند الانتهاء من الترحيل، قم بالتبديل مرة أخرى إلى discourse/discourse

  2. قم باستنساخ المستودع الخاص بك خارج Docker وانسخ الملفات إليه. قم بذلك بعد إعادة البناء، وإلا فإن البرنامج النصي للتجميع المسبق (precompile script) سيجد المستودع غير نظيف وسيستغرق البناء وقتًا أطول بكثير.

أعتقد أن الخيار رقم 1 هو الأفضل.

4 إعجابات

شكراً، @RGJ! سأسلك هذا الطريق.

لقد قمت بتغيير عنوان URL للمستودع داخل حاوية docker وتمكنت من تشغيل المستورد الخاص بي. ومع ذلك، عند تشغيل ./launcher rebuild app، تمت إعادة تعيين المستودع إلى المستودع الأصلي. لقد نظرت في Dockerfile ويبدو أنه يقوم بتضمين مسار المستودع بشكل ثابت، ولكنه لا يبدو أيضًا أن الحاوية الأساسية مبنية محليًا، لذا فإن التغييرات في Dockerfile لا تحقق التأثير المطلوب. هل هناك أي طريقة معتمدة لجعل هذا يعمل؟

أقترح العمل مع حاويتين. يمكنك القيام بذلك عن طريق إنشاء نسخة من ملف app.yml الحالي الخاص بك (يمكنك العثور عليه في /var/discourse/containers) وإعادة تسميته إلى شيء آخر مثل import.yml. ثم قم بتحديث المعلمة version إلى فرع الاستيراد المخصص الخاص بك.

params:
  version: your-branch

في أي وقت تحتاج فيه إلى تشغيل الاستيراد، قم بإيقاف حاوية app، وابدأ حاوية import وقم بتشغيل البرنامج النصي داخل حاوية import. إذا تم إجراء تغييرات كبيرة في Discourse، فقد تحتاج إلى إعادة تأسيس فرعك مع آخر التزام من النواة، وإعادة بناء الحاوية.

cd /var/discourse
./launcher enter import

# هل تريد التبديل إلى فرع مختلف؟
su discourse -c 'git checkout <branch>'

# هل تريد سحب كود جديد؟
su discourse -c 'git pull'

بمجرد الانتهاء من الترحيل، قم بإيقاف حاوية الاستيراد وأعد تشغيل حاوية التطبيق.

cd /var/discourse
./launcher stop import
./launcher start app

مع الشكر لـ @gerhard الذي علمني كيفية القيام بكل هذا :backhand_index_pointing_up:

6 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.