يحتوي هذا المستودع على رمز wikispeedruns.com.
نوصي بإنشاء بيئة بايثون افتراضية لتشغيل الخادم.
python -m venv env
لنظام التشغيل Windows Powershell:
./env/Scripts/Activate.ps1
لنظام Linux / Unix (Mac)
source env/bin/activate
ثم قم بتثبيت المتطلبات (مع تفعيل بيئتك الافتراضية)
pip install -r requirements.txt
ثم قم بتثبيت المتطلبات (مع تفعيل بيئتك الافتراضية)
npm install
هناك عدد من البرامج النصية للمساعدة في إعداد تطبيق الويب في البرامج النصية.
بمجرد تشغيل خادم MySQL، ستحتاج إلى إنشاء حساب. افتراضيًا، نفترض أن user
الحساب ليس لديه كلمة مرور (راجع default.json
). إذا كنت ترغب في استخدام إعداد MySQL مختلف، فيمكنك إنشاء prod.json
باستخدام حقول MySQL ذات الصلة في config
الذي سيتجاوز default.json
.
ثم قم بإنشاء قاعدة البيانات والجداول باستخدام البرنامج النصي المقدم.
cd scripts
python create_db.py
يوجد أيضًا برنامج نصي تفاعلي (يحتوي على تعليمات في البرامج النصية) يمكن استخدامه لإعداد حساب مسؤول محلي. من خلال حساب المسؤول، يمكن إدارة المطالبات من خلال /manage
.
cd scripts
python create_admin_account.py
(اختياري) وأخيرًا، يوجد أيضًا برنامج نصي لملء قاعدة البيانات ببيانات للتنمية المحلية
cd scripts
python populate_db.py
قم بتعيين متغير البيئة FLASK_ENV
في أي موجه أوامر تخطط لاستخدامه لتشغيل خادم القارورة. سيسمح هذا للمثيل المحلي بإعادة التحميل تلقائيًا عند تغيير الملفات.
على سبيل المثال، في Linux/Mac
export FLASK_DEBUG=1
export FLASK_ENV="development"
أو في ويندوز بوويرشيل
$env:FLASK_ENV="development"
من دليل المستوى الأعلى
npm run start
في غلاف منفصل، من دليل المستوى الأعلى
flask --app app run --debug
من أجل تشغيل الاختبارات محليًا، تحتاج إلى إنشاء حساب آخر في MYSQL باستخدام اسم المستخدم testuser
وكلمة المرور testpassword
. تم تكوين اختباراتنا لتعمل على هذا الحساب افتراضيًا.
ثم قم ببساطة بتشغيل pytest من دليل test
.
cd test
pytest
لاحظ أن هذه الاختبارات يتم إجراؤها أيضًا في Docker عند إجراء العلاقات العامة باستخدام سير عمل Github. في المستقبل، قد نقوم بإعداد عامل إرساء لإجراء الاختبارات أيضًا.
تتم إضافة الإنجازات إلى قاعدة البيانات عبر نصوص بايثون. قم بتشغيل برامج python النصية هذه مع تمكين بيئتك الافتراضية لملء جداول الإنجاز:
scriptsachievementadd_achievements_to_database.py
سيتم فحص أي عمليات تشغيل مستقبلية مقابل الإنجازات الموجودة في قاعدة البيانات. يمكننا أيضًا تطبيق قواعد الفحص هذه على عمليات التشغيل السابقة.
قم بتشغيل برنامج Python النصي للتحقق بأثر رجعي من عمليات التشغيل التاريخية مقابل جميع الإنجازات الحالية.
scriptsachievementhistorical_achievements.py
يتم دعم قائمة انتظار المهام غير المتزامنة لمهام الكشط بواسطة أداتين إضافيتين، الكرفس وredis. يتم تثبيت Celery كمتطلب python، ولكن يلزم تثبيت redis (https://redis.io/) وتشغيله بشكل منفصل (على غرار خادم SQL، راجع موقع الويب للحصول على التعليمات). تتطلب قائمة انتظار المهام المكشطة أيضًا scraper_graph
، والذي يمكن تنزيله محليًا (اتصل بأحد المشرفين)
بدلاً من حساب المسار كجزء من الطلب، والذي يؤدي إلى تجميد الخادم، يقوم flask بتمرير مهام الكشط إلى عملية أخرى يديرها الكرفس (ويتواصل من خلال redis). يتم تعريف هذه المهام باستخدام أدوات تزيين بايثون، والتي يمكن رؤية أمثلة عليها هنا.
لسوء الحظ، لا يتم دعم الكرفس ولا redis على النوافذ. لذلك، إذا كان لديك جهاز تطوير Windows، فسيتعين عليك تشغيل الخادم من خلال WSL. لاحظ أنه إذا كنت تريد الاحتفاظ بمثيل Windows MySQL الخاص بك، فأنت بحاجة إلى معرفة المنفذ الذي يتعرض له جهاز Windows المضيف في WSL. شاهد منشور المستخدم المميز هذا. لاحظ أن هذا يتغير في كل مرة يتم فيها إعادة تشغيل WSL.