التطوير باستخدام Docker
بما أن Discourse يعمل داخل Docker، فيجب أن تتمكن من تشغيل Discourse مباشرة من دليل المصدر الخاص بك باستخدام حاوية تطوير Discourse.
المزايا: لا حاجة لتثبيت أي تبعيات للنظام، ولا حاجة لأي إعدادات لتجهيز بيئة تطوير بسرعة.
العيوب: سيكون أبطأ قليلاً من بيئة التطوير الأصلية على Ubuntu، وأبطأ بكثير من التثبيت الأصلي على MacOS.
انظر أيضًا Developing Discourse using a Dev Container
الخطوة 1: تثبيت Docker
Ubuntu
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
19.10
sudo apt-get install docker.io
sudo usermod -a -G docker $USER
sudo reboot
Windows WSL: Ubuntu
يمكنك تشغيل الأوامر أعلاه داخل WSL، ولكن يجب أن تكون جميع الملفات داخل نظام ملفات WSL. على سبيل المثال: يعمل بشكل جيد إذا كانت الملفات داخل ~/discourse، لكنه يفشل إذا وُضعت داخل /mnt/c/discourse.
MacOS
صورة تطوير Discourse متاحة فقط لهياكل x86_64. أجهزة Mac M1 قادرة على تشغيل الصورة باستخدام محاكاة البنية، لكن من غير المرجح أن يعمل Discourse بسبب عدم دعم inotify في QEMU.
بدلاً من ذلك، يجب استخدام Install Discourse on macOS for development
الخيار 1: تحميل ملف .dmg معبأ من متجر Docker
الخيار 2: brew install docker
الخطوة 2: تشغيل الحاوية
قم باستنساخ مستودع Discourse إلى جهازك المحلي.
git clone https://github.com/discourse/discourse.git
cd discourse
(من جذر المصدر الخاص بك)
d/boot_dev --init
# انتظر أثناء:
# - تثبيت التبعيات،
# - ترحيل قاعدة البيانات، و
# - إنشاء مستخدم مسؤول (ستحتاج إلى التفاعل مع هذا)
# في أحد طرفيات المحادثة:
d/rails s
# وفي طرفية منفصلة
d/dev --only ember
…ثم افتح متصفحًا على http://localhost:3000 و ها أنت ذا! يجب أن ترى Discourse.
روابط رمزية للإضافات
يدعم سير عمل التطوير باستخدام Docker الروابط الرمزية داخل دليل plugins/، مع التحفظ التالي:
عند إنشاء رابط رمزي لإضافة جديدة، يجب إعادة تشغيل حاوية Docker باستخدام:
d/shutdown_dev; d/boot_dev
ملاحظات:
-
لاختبار البريد الإلكتروني، شغّل MailHog :
d/mailhog -
إذا كانت هناك مجوهرات (gems) مفقودة، شغّل:
d/bundle install -
إذا كانت هناك حاجة لترحيل قاعدة بيانات:
d/rake db:migrate RAILS_ENV=development -
عند الانتهاء، يمكنك اختيار إيقاف حاوية Docker باستخدام:
d/shutdown_dev -
يتم الاحتفاظ بالبيانات بين استدعاءات الحاوية في دليل
tmp/postgresالخاص بجذر المصدر الخاص بك. إذا أردت لأي سبب إعادة تعيين قاعدة بياناتك، شغّل:sudo rm -fr data -
إذا رأيت أخطاء مثل «تم رفض الإذن أثناء محاولة الاتصال بـ Docker»، شغّل:
run `sudo usermod -aG docker ${USER}` sudo service docker restart -
إذا كنت ترغب في تعريض المنافذ من الحاوية إلى الشبكة عالميًا (مفعل افتراضيًا)، استخدم:
d/boot_dev -p -
ملف Dockerfile يأتي من discourse/discourse_docker على GitHub، وتحديدًا image/discourse_dev.
تشغيل الاختبارات
d/rake autospec
لتشغيل اختبارات إضافة معينة، يمكنك أيضًا فعل شيء مثل هذا:
d/rake plugin:spec["discourse-follow"]
أو حتى شيء أكثر تحديدًا:
my-machine:~/discourse$ d/shell
discourse@discourse:/src$ RAILS_ENV=test /src/bin/rspec plugins/discourse-follow/spec/lib/updater_spec.rb:37
هذا المستند يتحكم في إصداراته - اقترح التغييرات على GitHub.