Este repositorio contiene el código de wikispeedruns.com.
Recomendamos crear un entorno virtual Python para ejecutar el servidor.
python -m venv env
Para WindowsPowershell:
./env/Scripts/Activate.ps1
Para Linux/basado en Unix (Mac)
source env/bin/activate
Luego instala los requisitos (con tu entorno virtual activado)
pip install -r requirements.txt
Luego instala los requisitos (con tu entorno virtual activado)
npm install
Hay varios scripts para ayudar a configurar la aplicación web en scripts.
Una vez que el servidor MySQL se esté ejecutando, deberá crear una cuenta. De forma predeterminada, asumimos un user
de cuenta sin contraseña (consulte default.json
). Si desea utilizar una configuración de MySQL diferente, puede crear prod.json
con los campos de MySQL relevantes en config
que anularán default.json
.
Luego cree la base de datos y las tablas utilizando el script proporcionado.
cd scripts
python create_db.py
También hay un script interactivo (con instrucciones en los scripts) que se puede utilizar para configurar una cuenta de administrador local. A través de la cuenta de administrador, las indicaciones se pueden administrar a través de /manage
.
cd scripts
python create_admin_account.py
(Opcional) Finalmente, también hay un script para llenar la base de datos con datos para el desarrollo local.
cd scripts
python populate_db.py
Configure la variable de entorno FLASK_ENV
en cualquier símbolo del sistema que planee usar para ejecutar el servidor flask. Esto permitirá que la instancia local se recargue automáticamente cuando se cambien los archivos.
Por ejemplo, en Linux/Mac
export FLASK_DEBUG=1
export FLASK_ENV="development"
O en Windows Powershell
$env:FLASK_ENV="development"
Desde el directorio de nivel superior
npm run start
En un shell separado, desde el directorio de nivel superior
flask --app app run --debug
Para ejecutar las pruebas localmente, necesita crear otra cuenta en MYSQL con el nombre de usuario testuser
y la contraseña testpassword
. Nuestras pruebas están configuradas para ejecutarse en esta cuenta de forma predeterminada.
Luego, simplemente ejecute pytest desde el directorio test
.
cd test
pytest
Tenga en cuenta que estas pruebas también se ejecutan en Docker al realizar un PR utilizando los flujos de trabajo de Github. En el futuro, es posible que también configuremos Docker para ejecutar pruebas.
Los logros se agregan a la base de datos mediante scripts de Python. Ejecute estos scripts de Python con su entorno virtual habilitado para completar las tablas de logros:
scriptsachievementadd_achievements_to_database.py
Cualquier ejecución futura se comparará con los logros en la base de datos. También podemos aplicar estas reglas de verificación a ejecuciones anteriores.
Ejecute este script de Python para verificar retroactivamente las ejecuciones históricas con todos los logros actuales.
scriptsachievementhistorical_achievements.py
La cola de tareas asincrónicas para tareas scraper está respaldada por 2 herramientas adicionales, apio y redis. Celery se instala como requisito de Python, pero redis (https://redis.io/) debe instalarse y ejecutarse por separado (similar al servidor SQL; consulte el sitio web para obtener instrucciones). El raspador task_queue también requiere el scraper_graph
, que se puede descargar localmente (comuníquese con uno de los mantenedores)
En lugar de calcular la ruta como parte de la solicitud, lo que congela el servidor, flask pasa las tareas del raspador a otro proceso administrado por celery (y se comunica a través de redis). Estas tareas se definen utilizando decoradores de Python, cuyos ejemplos se pueden ver aquí.
Desafortunadamente, ni el apio ni el redis son compatibles con Windows. Entonces, si tiene una máquina de desarrollo con Windows, deberá ejecutar el servidor a través de WSL. Tenga en cuenta que si desea conservar su instancia de MySQL de Windows, debe determinar en qué puerto está expuesta la máquina host de Windows en WSL. Vea esta publicación de superusuario. Tenga en cuenta que esto cambia cada vez que se reinicia WSL.