2016-07-18 6 views
2

私はHerokuで開発中で、config変数を使用して、機密変数やその他の環境変数を格納しています。ローカルで開発している間に、これらの変数を.envファイルに反映させました。django、herokuでローカルマイグレーション中に環境変数が利用できない

私が今見つけたのは、移行中に.envファイルの変数が読み込まれないということです。彼らはheroku localでローカルWebサーバーを実行している間にロードされますが、マイグレーションのためにロードされません。これは、sqliteのデフォルトDBが設定ファイルに "ハードコードされていた"ため、私のローカルアプリケーションがデフォルトのsqlite3データベースを使用している間は問題ありませんでした。しかし、最近私は自分のローカルPostgresql DBをローカルの開発者に使いたいと思っています。 OKだから.envファイルにDATABASE_URL変数を追加しました。

ローカルアプリをDBに移行することができません。私は.envファイルの内容が移行のためのos.environマッピングに追加されていないため、これが原因であることがわかりました。テストするには

、私は.envファイルにテスト変数を追加しました:私はpython manage.py migrateを試してみました

import os 
import dj_database_url 

if "TEST" not in os.environ: 
    raise Exception("No .env vars found.") 

ファイル「/ユーザ/ settings.pyで次に

TEST="teeeest" 

apple/heroku/b/b/settings.py "、行16、 に例外が発生しました(" No .env varsが見つかりませんでした。 )例外:.envvarsは見つかりませんでした。

しかし、私はheroku localを実行することができ、エラーはありません。また、heroku localの間に.env変数が利用可能であることを確認するために、さらにテストを行っています。

さまざまな理由から、.envファイルにローカルDB接続文字列を設定したいが、現時点では可能ではないようだ。これはherokuのdjangoの正しい動作ですか? .envファイル変数は、サーバーを実行しているときにのみアクセスでき、移行用ではありません。

答えて

1

manage.py .envファイルについて何も知らない。あなたは何かの下でコマンドを実行する必要があります。 Heroku自身が使用しているForeman、またはPythonの実装であるHonchoのいずれかです。

+1

私は実際にちょうどHerokuのは、ローカル '>長いweekend-後にそれを考え出しました。 https://devcenter.heroku.com/articles/heroku-local#run-your-app-locally-using-the-heroku-local-command-line-tool-run-a-one-off-command-locally –

関連する問題