@MartijnPieters が自分の回答に対するコメントで示唆しているように、collective.recipe.templateを使用して.ini
. 自分のプロジェクトでそのデータにアクセスするにはどうすればよいか考えたので、解決しました:-)
必要なものまでさかのぼって作業しましょう。まず、ビルドアウト ディレクトリが必要なビュー コードで:
def your_view(request):
buildout_dir = request.registry.settings['buildout_dir']
....
request.registry.settings
(ドキュメントを参照) は、「辞書のような配置設定オブジェクト」です。展開設定を参照してください。これは、次の**settings
ようなメイン メソッドに渡されるものです。def main(global_config, **settings)
これらの設定は、またはファイルの[app:main]
一部にあるものです。そこに buildout ディレクトリを追加します。deployment.ini
production.ini
[app:main]
use = egg:your_app
buildout_dir = /home/you/wherever/it/is
pyramid.reload_templates = true
pyramid.debug_authorization = false
...
しかし、これが最後のステップなので、ハードコードされたパスをそこに入れたくはありません。したがって、テンプレートを使用して .ini を生成します。テンプレートdevelopment.ini.in
は${partname:variable}
拡張言語を使用します。あなたの場合、必要なもの${buildout:directory}
:
[app:main]
use = egg:your_app
buildout_dir = ${buildout:dir}
# ^^^^^^^^^^^^^^^
pyramid.reload_templates = true
pyramid.debug_authorization = false
...
buildout.cfg
から生成するビルドアウト パーツを追加development.ini
しdevelopment.ini.in
ます。
[buildout]
...
parts =
...
inifile
...
[inifile]
recipe = collective.recipe.template
input = ${buildout:directory}/development.ini.in
output = ${buildout:directory}/development.ini
Collective.recipe.template を使用すると、あらゆる種類のクールなことを実行できることに注意してください。たとえば、と で${serverconfig:portnumber}
一致するポート番号を生成します。楽しむ!production.ini
your_site_name.nginx.conf