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