このリポジトリには、wikispeedruns.com のコードが保持されます。
サーバーを実行するための Python 仮想環境を作成することをお勧めします。
python -m venv env
Windows Powershell の場合:
./env/Scripts/Activate.ps1
Linux/Unixベース(Mac)の場合
source env/bin/activate
次に、要件をインストールします (仮想環境をアクティブ化した状態で)。
pip install -r requirements.txt
次に、要件をインストールします (仮想環境をアクティブ化した状態で)。
npm install
スクリプトで Web アプリをセットアップするのに役立つスクリプトが多数あります。
MySQL サーバーが実行されたら、アカウントを作成する必要があります。デフォルトでは、パスワードのないアカウントuser
を想定しています ( default.json
を参照)。別の MySQL セットアップを使用したい場合は、 config
内の関連する MySQL フィールドを使用してprod.json
を作成し、 default.json
をオーバーライドします。
次に、提供されたスクリプトを使用してデータベースとテーブルを作成します。
cd scripts
python create_db.py
ローカル管理者アカウントのセットアップに使用できる対話型スクリプト (スクリプト内の指示付き) もあります。管理者アカウントを介して、 /manage
を通じてプロンプトを管理できます。
cd scripts
python create_admin_account.py
(オプション) 最後に、ローカル開発用のデータをデータベースに入力するスクリプトもあります。
cd scripts
python populate_db.py
Flask サーバーの実行に使用する予定のコマンド プロンプトで環境変数FLASK_ENV
設定します。これにより、ファイルが変更されたときにローカル インスタンスが自動的にリロードされるようになります。
たとえば、Linux/Mac の場合
export FLASK_DEBUG=1
export FLASK_ENV="development"
または Windows Powershell で
$env:FLASK_ENV="development"
最上位ディレクトリから
npm run start
別のシェルで、最上位ディレクトリから
flask --app app run --debug
テストをローカルで実行するには、ユーザー名testuser
とパスワードtestpassword
使用して MYSQL に別のアカウントを作成する必要があります。テストはデフォルトでこのアカウントに対して実行されるように構成されています。
次に、 test
ディレクトリから pytest を実行するだけです。
cd test
pytest
これらのテストは、Github ワークフローを使用して PR を作成するときに Docker でも実行されることに注意してください。将来的には、テストを実行するために docker もセットアップする可能性があります。
実績は Python スクリプトを介してデータベースに追加されます。仮想環境を有効にしてこの Python スクリプトを実行し、実績テーブルにデータを入力します。
scriptsachievementadd_achievements_to_database.py
今後の実行は、データベース内の実績と照合してチェックされます。これらのチェック ルールを以前の実行に適用することもできます。
この Python スクリプトを実行して、現在のすべての実績に対して過去の実行を遡及的にチェックします。
scriptsachievementhistorical_achievements.py
スクレイパー タスクの非同期タスク キューは、2 つの追加ツール、celery と redis によってサポートされています。 Celery は Python の要件としてインストールされますが、redis (https://redis.io/) は別途インストールして実行する必要があります (SQL サーバーと同様、手順については Web サイトを参照してください)。スクレイパー task_queue には、ローカルにダウンロードできるscraper_graph
も必要です (メンテナーの 1 人に連絡してください)。
リクエストの一部としてパスを計算してサーバーをフリーズさせるのではなく、flask はスクレーパー タスクを celery が管理する別のプロセスに渡します (そして redis を介して通信します)。これらのタスクは Python デコレータを使用して定義されており、その例はここで見ることができます。
残念ながら、セロリも Redis も Windows ではサポートされていません。したがって、Windows 開発マシンをお持ちの場合は、WSL 経由でサーバーを実行する必要があります。 Windows MySQL インスタンスを保持したい場合は、ホスト Windows マシンが WSL でどのポートで公開されているかを把握する必要があることに注意してください。このスーパー ユーザーの投稿を参照してください。これは、WSL が再起動されるたびに変わることに注意してください。