僕の考えるFlaskの設定まわりのベストプラクティス - 7月 06, 2018 Flaskの設定を扱う方法はいろいろある。 べたがきでもできるし、configファイルを作って読み込むこともできる。 調べた中で見つけたベストプラクティスをめも。 めっちゃ小規模のアプリとかでない限りはこれを基本にしていくといいのかも。 * 環境変数にdevelop とかproductionとか書いておく * configファイル側に各環境のオブジェクトへのマップを定義 * 環境変数で読み込んだ値をマップで飛ばして得られたオブジェクトをもとに設定する * githubにあげたくない設定はinstanceフォルダにおいておく 以下は`FLASK_APP_ENV`という環境変数を読み込んで設定している例。 環境変数が設定されていないと`production`を読み込むようにしている。 ローカル環境には環境変数に`develop`をセットしておくようにした。 ```python:example config_type = { "development": "config.Development", "testing": "config.Testing", "production": "config.Production" } app = Flask(__name__, instance_relative_config=True) app.config.from_object(config_type.get(os.getenv('FLASK_APP_ENV', 'production'))) app.config.from_pyfile('sensitive_data.cfg',silent=True) ``` ```python:config.py class Development(){ debug=hoge hoge=fuga } ``` `silent`ではinstance以下に指定した設定ファイルがない場合にエラーを出力するかを制御する。 Trueだとない場合もエラーは出さずにそのまま進めようとする。(が、seacret keyがないといずれにしても怒られるのであんま関係ないかな?) `instance_relative_config=True`としないと `instance/sensitive_data_cfg`みたいに指定しなきゃいけない。 せっかくデフォルトでinstanceフォルダを見に行ってくれるからこれはTrueに設定しとくと良い。 instanceフォルダは慣例としてgithub管理外の設定ファイルをおいておくということになっているが、あくまで慣例なだけなのでちゃんとgitignoreする必要がある この記事をシェアする Twitter Facebook Google+ B!はてブ Pocket Feedly コメント
コメント
コメントを投稿