環境依存の設定を書くiniファイルを分割する方法を調べたのでメモ。
pythonは標準で定数定義をする機能が無いので現在iniファイルに定数を書いたりしてます。
環境ごとにiniファイルは作るので同じ内容を複数に記述してしまっていて管理が煩雑になってしまうので共通のiniファイルを作って各環境iniファイルに読み込ませることにしました。
development.ini,production.iniの他にcommon.iniを用意する。
#common.ini
[common]
name = 山田太郎
tel = 03-xxxx-xxxx
development.ini,production.iniの環境ファイルに以下のようにしてcommon.iniのファイルパスを定義。(同じ階層においてる場合)
common.path = %(here)s/common.ini
アプリの起動設定が書かれている _ini_.pyでcommon.iniを読み込ませる関数を作成。
def common_ini(settings):
import os
from ConfigParser import SafeConfigParser
ini = settings.get("common.path")
if ini is None:
return
if not os.path.exists(ini) and os.path.isfile(ini):
raise ConfigurationError("ini is not found")
conf = SafeConfigParser()
conf.read(ini)
return dict(conf.items('common'))
上記関数をmain関数でconfig.add_settingsする。
def main(global_config, **settings):
""" This function returns a WSGI application.
from pyramid.config import Configurator
config = Configurator(settings=settings)
config.add_settings(common_ini(settings))
これで各環境iniファイルのほかに共通iniファイルを追加で読み込ませることが出来ます。