LoginSignup
6

More than 5 years have passed since last update.

pyramidフレームワークのiniファイルを分割する

Posted at

環境依存の設定を書く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ファイルを追加で読み込ませることが出来ます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6