التطوير باستخدام دوكر (Docker)
بما أن ديسكورس (Discourse) يعمل في دوكر (Docker)، يجب أن تكون قادرًا على تشغيل ديسكورس مباشرةً من دليل المصدر الخاص بك باستخدام حاوية تطوير ديسكورس (Discourse development container).
الإيجابيات: لا حاجة لتثبيت أي تبعيات للنظام، ولا حاجة لأي إعدادات على الإطلاق لإعداد بيئة تطوير بسرعة.
السلبيات: ستكون أبطأ قليلاً من بيئة التطوير الأصلية على أوبونتو (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)
صورة دوكر (Docker) الخاصة بتطوير ديسكورس (Discourse) متاحة فقط لمعماريات x86_64. أجهزة ماك M1 قادرة على بدء تشغيل الصورة باستخدام محاكاة المعمارية، ولكن من غير المرجح أن يتم تشغيل ديسكورس بسبب نقص دعم inotify في QEMU.
بدلاً من ذلك، يجب عليك استخدام Install Discourse on macOS for development
الخيار 1: قم بتنزيل ملف .dmg مجمع من متجر دوكر (Docker store)
الخيار 2: brew install docker
الخطوة 2: بدء تشغيل الحاوية
استنسخ مستودع ديسكورس (Discourse repository) إلى جهازك المحلي.
git clone https://github.com/discourse/discourse.git
cd discourse
(من جذر المصدر الخاص بك)
d/boot_dev --init
# انتظر بينما:
# - يتم تثبيت التبعيات،
# - ترحيل قاعدة البيانات، و
# - يتم إنشاء مستخدم مسؤول (ستحتاج إلى التفاعل مع هذا)
# في طرفية واحدة:
d/rails s
# وفي طرفية منفصلة
d/ember-cli
…ثم افتح متصفحًا على http://localhost:4200 و ها أنت ذا!، يجب أن ترى ديسكورس (Discourse).
روابط رمزية للإضافات (Plugin Symlinks)
يدعم تدفق تطوير دوكر (Docker) الروابط الرمزية تحت الدليل plugins/، مع التحذير التالي:
كلما تم إنشاء رابط رمزي جديد للإضافة، يجب إعادة تشغيل حاوية دوكر (Docker container) باستخدام:
d/shutdown_dev; d/boot_dev
ملاحظات:
-
لاختبار رسائل البريد الإلكتروني، قم بتشغيل MailHog:
d/mailhog -
إذا كانت هناك مكتبات (gems) مفقودة، قم بتشغيل:
d/bundle install -
إذا كانت هناك حاجة لترحيل قاعدة بيانات (db migration):
d/rake db:migrate RAILS_ENV=development -
عندما تنتهي، يمكنك اختيار إيقاف تشغيل حاوية دوكر (Docker container) باستخدام:
d/shutdown_dev -
يتم الاحتفاظ بالبيانات بين استدعاءات الحاوية في دليل
tmp/postgresالخاص بجذر المصدر الخاص بك. إذا كنت تريد لأي سبب إعادة تعيين قاعدة البيانات الخاصة بك، قم بتشغيل:sudo rm -fr data -
إذا رأيت أخطاء مثل “permission denied while trying to connect to Docker” (تم رفض الإذن أثناء محاولة الاتصال بـ 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.