(機械翻訳) 環境変数と `` .ini``ファイル設定

:app: Pyramid`の動作は、オペレーティングシステムの環境変数と `.ini``設定ファイルのアプリケーションセクションの設定を組み合わせて設定できます。環境変数の意味と設定ファイルの設定は重複しています。

注釈

環境変数と同じ意味の設定ファイル設定が存在し、アプリケーション起動時にその両方が存在する場合は、環境変数の設定が優先されます。

"構成ファイル設定名"という用語は、アプリケーションの ".ini"構成のキーを指します。この章で説明する設定ファイルの設定名は、app: `Pyramid`用に予約されています。アプリケーション固有の構成設定を示すためにそれらを使用しないでください。

テンプレートのリロード

この値がtrueの場合、アプリケーションを再起動せずにテンプレートを変更するとテンプレートが自動的に再ロードされるため、テンプレートの変更は開発中にすぐに反映されます。このフラグは、ChameleonとMakoのテンプレートだけでなく、ほとんどのサードパーティのテンプレートレンダリング拡張にも意味があります。

環境変数名 設定ファイルの設定名
`` PYRAMID_RELOAD_TEMPLATES``
`` pyramid.reload_templates``
または `` reload_templates``

アセットのリロード

この値がtrueの場合は、アセットファイルのデータをキャッシュしないでください。

参考

参照:ref: `overriding_assets_section`を参照してください。

環境変数名 設定ファイルの設定名
`` PYRAMID_RELOAD_ASSETS`` `` pyramid.reload_assets``または `` reload_assets``

注釈

下位互換性のために、アセットリロードの設定にはエイリアスを使用できます: `` PYRAMID_RELOAD_RESOURCES``(envvar)と `` pyramid.reload_resources``(設定ファイル)。

デバッグ権限

この値がtrueの場合、ビュー認可の失敗と成功の情報をstderrに出力します。

参考

参照:ref: `debug_authorization_section`を参照してください。

環境変数名 設定ファイルの設定名
`` PYRAMID_DEBUG_AUTHORIZATION`` `` pyramid.debug_authorization`または `` debug_authorization``

デバッグエラーが見つかりません

この値がtrueの場合、ビュー関連の `` NotFound``デバッグメッセージをstderrに出力します。

参考

参照:ref: debug_notfound_section

環境変数名 設定ファイルの設定名
`` PYRAMID_DEBUG_NOTFOUND`` `` pyramid.debug_notfound`または `` debug_notfound``

ルートマッチングのデバッグ

この値がtrueの場合、term: `url dispatch`ルートマッチングに関するデバッグメッセージを出力します。

参考

参照:ref: `debug_routematch_section`を参照してください。

環境変数名 設定ファイルの設定名
`` PYRAMID_DEBUG_ROUTEMATCH`` `` pyramid.debug_routematch``または `` debug_routematch``

HTTPキャッシュの防止

この値がtrueの場合、 `` http_cache``ビュー設定引数がこのプロセスでグローバルに影響を与えないようにします。 HTTPキャッシングに関連するレスポンスヘッダーは、:app: Pyramid` `http_cache``ビュー設定機能によって設定されます。

参考

参照:ref: `influencing_http_caching`を参照してください。

環境変数名 設定ファイルの設定名
`` PYRAMID_PREVENT_HTTP_CACHE`` `` pyramid.prevent_http_cache``または `` prevent_http_cache``

キャッシュ破棄の防止

この値がtrueのときに、 `` cachebust``静的ビュー設定引数がこのプロセスでグローバルに影響を及ぼさないようにします。この場合、キャッシュバスターは構成されず、使用されません。

バージョン 1.6 で追加.

参考

参照:ref: `cache_busting`を参照してください。

環境変数名 設定ファイルの設定名
`` PYRAMID_PREVENT_CACHEBUST`` `` pyramid.prevent_cachebust``または `` prevent_cachebust``

すべてのデバッグ

すべての `` debug * ``設定を有効にします。

環境変数名 設定ファイルの設定名
`` PYRAMID_DEBUG_ALL`` `` pyramid.debug_all``または `` debug_all``

すべてをリロードする

すべての `` reload * ``設定を有効にします。

環境変数名 設定ファイルの設定名
`` PYRAMID_RELOAD_ALL`` `` pyramid.reload_all``または `` reload_all``

デフォルトロケール名

:term: `locale negotiator`が登録されていないとき、ここで与えられた値はデフォルトのロケール名として使われます。

参考

参照:ref: `localization_deployment_settings`を参照してください。

環境変数名 設定ファイルの設定名
`` PYRAMID_DEFAULT_LOCALE_NAME`` `` pyramid.default_locale_name``または `` default_locale_name``

パッケージを含む

`` pyramid.includes``は、他のパッケージをインクルードするようアプリケーションに指示します。この設定を使用することは:meth: `pyramid.config.Configurator.include`メソッドの使用と同じです。

設定ファイルの設定名
`` pyramid.includes``

`` pyramid.includes``に割り当てられた値はシーケンスでなければなりません。シーケンスにはいくつかの異なる形式があります。

  1. それは文字列にすることができます。

    文字列の場合、パッケージ名はスペースで区切ることができます:

    package1 package2 package3
    

    パッケージ名は改行で区切ることもできます:

    package1
    package2
    package3
    
  2. 値は文字列であるPythonリストにすることができます:

    ['package1', 'package2', 'package3']
    

シーケンスの各値は:term: `ドット付きPython名`でなければなりません。

`` pyramid.includes``と:meth: pyramid.config.Configurator.include

パッケージを含めるには、 `` pyramid.includes``と:meth: `pyramid.config.Configurator.include`の2つの方法があります。この節では、その等価性について説明します。

PasteDeployの使用

アプリケーションのPasteDeploy `` .ini``ファイルに以下の `` pyramid.includes``設定を使用します:

[app:main]
pyramid.includes = pyramid_debugtoolbar
                   pyramid_tm

構成コードで次の文を使用するのと同じです。

1
2
3
4
5
6
7
8
from pyramid.config import Configurator

def main(global_config, **settings):
    config = Configurator(settings=settings)
    # ...
    config.include('pyramid_debugtoolbar')
    config.include('pyramid_tm')
    # ...

どちらかまたはどちらかの形式を使用するのは問題ありません。

プレーンPython

プレーンPythonのPyramidアプリケーションで以下の `` pyramid.includes``設定を使用します:

1
2
3
4
5
from pyramid.config import Configurator

if __name__ == '__main__':
    settings = {'pyramid.includes':'pyramid_debugtoolbar pyramid_tm'}
    config = Configurator(settings=settings)

構成コードで次の文を使用するのと同じです。

1
2
3
4
5
6
7
from pyramid.config import Configurator

if __name__ == '__main__':
    settings = {}
    config = Configurator(settings=settings)
    config.include('pyramid_debugtoolbar')
    config.include('pyramid_tm')

どちらかまたはどちらかの形式を使用するのは問題ありません。

明示的なTween構成

この値はあなたの設定でexplicit:term: `tween`の順序​​を実行することを可能にします。 Tweensは、アドオンの著者がPyramidを拡張するために使用するコードの一部です。それらは鎖を形成し、順序づけを必要とする。

理想的には、 `` pyramid.tweens``の設定を使う必要はありません。トゥイーンを登録するアドオンパッケージが"included "の場合、トゥイーンは一般に順序付けられ、"暗黙的に"含まれます。パッケージは、設定で `` pyramid.includes``という名前をつけたとき、または:meth: `pyramid.config.Configurator.include`を呼び出すときに含まれます。

付属のアドオンの作成者は、パッケージが含まれているときにピラミッドに「暗黙的な」トゥイーン設定のヒントを提供します。ただし、暗黙的なトゥイーンの順序付けはベストエフォート型のみです。ピラミッドは、アドオンの作成者が提供するヒントを使用して最高のトゥイーンの暗黙の順序を提供しようとしますが、それはベストエフォートなので、非常に正確なトゥイーンの順序が必要な場合は、取得する唯一の確実な方法は、明示的なトゥイーンオーダー。あなたは、あなたのトゥイーンの注文(ref: displaying_tweens`を参照)を調べて、アドオン作成者の命令で `pyramid.tweens``設定値を追加する必要があります。

設定ファイルの設定名
`` pyramid.tweens``

`` pyramid.tweens``に割り当てられた値はシーケンスでなければなりません。シーケンスにはいくつかの異なる形式があります。

  1. それは文字列にすることができます。

    文字列の場合、トゥイーンの名前はスペースで区切ることができます:

    pkg.tween_factory1 pkg.tween_factory2 pkg.tween_factory3
    

    トゥイーン名は、キャリッジリターンで区切ることもできます:

    pkg.tween_factory1
    pkg.tween_factory2
    pkg.tween_factory3
    
  2. 値は文字列であるPythonリストにすることができます:

    ['pkg.tween_factory1', 'pkg.tween_factory2', 'pkg.tween_factory3']
    

シーケンスの各値は:term: `ドット付きPython名`でなければなりません。

PasteDeployの設定とプレーンPythonの設定

あなたのアプリケーションのPasteDeploy `` .ini``ファイルで以下の `` pyramid.tweens``設定を使用してください:

[app:main]
pyramid.tweens = pyramid_debugtoolbar.toolbar.tween_factory
                 pyramid.tweens.excview_tween_factory
                 pyramid_tm.tm_tween_factory

構成コードで次の文を使用するのと同じです。

1
2
3
4
5
6
7
8
9
from pyramid.config import Configurator

def main(global_config, **settings):
    settings['pyramid.tweens'] = [
            'pyramid_debugtoolbar.toolbar.tween_factory',
            'pyramid.tweebs.excview_tween_factory',
            'pyramid_tm.tm_tween_factory',
             ]
    config = Configurator(settings=settings)

どちらかまたはどちらかの形式を使用するのは問題ありません。

あなたの設定ファイルの名前が `` MyProject.ini``であると仮定して、あなたの:app: Pyramid`アプリケーションを表すファイル内に [app:main] という名前のアプリケーションを表すセクションがあります。上記の "Config File Setting Name"カラムに記述されている設定ファイルの設定は ` [app:main] ``セクションにあります。このようなセクションの例を次に示します。

1
2
3
4
[app:main]
use = egg:MyProject
pyramid.reload_templates = true
pyramid.debug_authorization = true

環境変数を使用して、そのように文書化された設定と同じ目的を達成することもできます。たとえば、次のコマンドラインを使用して:app: `Pyramid`アプリケーションを起動することができます:

$ PYRAMID_DEBUG_AUTHORIZATION=1 PYRAMID_RELOAD_TEMPLATES=1 \
       $VENV/bin/pserve MyProject.ini

このようにアプリケーションを起動した場合、あなたの:app: Pyramid`アプリケーションは、アプリケーションの .ini`ファイルの [app:main] `セクションにそれぞれの設定を置いたのと同じように動作します`ファイル。

すべての `` debug``設定( `` pyramid.debug_``で始まるすべての設定)を一つにするには、 `` PYRAMID_DEBUG_ALL = 1``を環境変数の設定として使うか、 configファイルで `` pyramid.debug_all = true``を実行してください。これは、 `` pyramid.reload_templates``のような `` pyramid.debug_ * ``で始まらない設定には影響しないことに注意してください。

すべての `` pyramid.reload``の設定( `` pyramid.reload_``で始まるすべての設定)を一つにするには、 `` PYRAMID_RELOAD_ALL = 1``を環境変数の設定として使うか、設定ファイルで `` pyramid.reload_all = true``を使うことができます。これは `` pyramid.debug_notfound``のような `` pyramid.reload_ * ``で始まらない設定には影響しないことに注意してください。

注釈

環境変数を使用して構成設定を指定するのは、開発中に最も有効です。構成ファイルの永続的な設定を増やしたり変更したりすることができます。これは、リロードとデバッグの設定の多くに、実稼働環境で望ましくないパフォーマンスやセキュリティ(つまり開示)があることが多いために便利です。

`` reload_templates``と `` reload_assets``の区別を理解する

`` pyramid.reload_assets``と `` pyramid.reload_templates``の違いは微妙です。テンプレート自体も:app: `Pyramid`をアセットファイル(他の静的ファイルと一緒に扱う)として扱われているので、区別が混乱する可能性があります。一般的な資産についてのいくつかのコンテキストについては、ref: `overriding_assets_section`を読むことが役に立ちます。

`` pyramid.reload_templates``が真の場合、:app: Pyramid`は、基礎となるテンプレートシステムの、個々のテンプレートファイルに対するファイルの変更をチェックする機能を利用します。 ` pyramid.reload_templates``が真で、 `` pyramid.reload_assets``が* not * trueの場合、 `` pkg_resources``パッケージによって返されたテンプレートファイル名(資産解像度でフードの下で使用されます)は次のようにキャッシュされます: app:Pyramidを最初のリクエストに追加します。後続の同じテンプレートファイルに対する要求は、キャッシュされたテンプレートファイル名を返します。基礎となるテンプレートシステムは、すべての要求に対してこの特定のファイルに対する変更をチェックします。 `` pyramid.reload_templates``を `` True``に設定しても、パフォーマンスに劇的な影響はありません(ただし、何らかの効果があるため、実稼働環境で使用する必要はありません)。

しかし、 `` pyramid.reload_assets``が真の場合、:app: Pyramid`はテンプレートファイル名をキャッシュしません。つまり、変更のたびにサーバを再起動することなく、テンプレートのオーバーライドされたアセットディレクトリの内容を変更する効果を見ることができます。 。同じテンプレートファイルに対する後続の要求は、オーバーライドされたアセットディレクトリの現在の状態に基づいて異なるファイル名を返すことがあります。 ` pyramid.reload_assets``を `` True``に設定すると、パフォーマンスが劇的に*影響を受け、各テンプレートレンダリングの処理が一桁遅くなります。ただし、オーバーライドされたアセットディレクトリでファイルを移動するときに有効にすると便利です。 `` pyramid.reload_assets``は、テンプレートを使用しているときにシステムを非常に遅くします。プロダクションシステムで `` pyramid.reload_assets``を `` True``に設定しないでください。

カスタム設定の追加

時々、アプリケーションにカスタム設定を追加する必要があるかもしれません。方法は次のとおりです。

  • .ini`ファイルを使用している場合は、 .ini`ファイルを変更して、Pyramidアプリケーションを表す `` [app:foo] ``セクションに設定を追加してください。例えば:

    [app:main]
    # .. other settings
    debug_frobnosticator = True
    
  • Pyramid WSGIアプリケーションが作成される場所を表す `` main() ``関数では、このキーと値のペアを設定として取得し、必要な型変換を行うことを期待してください。

    あなたがカスタム値の型変換を行ったなら、変換された値を `` settings``ディクショナリ*にリセットしてから、:term: Configurator`にディクショナリを `settings``として渡します。例えば:

    def main(global_config, **settings):
        # ...
        from pyramid.settings import asbool
        debug_frobnosticator = asbool(settings.get(
                   'debug_frobnosticator', 'false'))
        settings['debug_frobnosticator'] = debug_frobnosticator
        config = Configurator(settings=settings)
    

    注釈

    あなたが `` settings``辞書を変換したバージョンの変数で変更することは特に重要です。これをコンフィギュレータに渡す前に:コンフィギュレータは `` settings``の copy *を行います、それを使用しませんあなたは直接渡します。

  • アプリケーションの設定に後で追加される `` includeme``関数を作成するときは、関数の唯一の引数として渡される:term: Configurator`のインスタンスを介して `settings``辞書にアクセスすることができます。例えば:

def includeme(config):
    settings = config.registry.settings
    debug_frobnosticator = settings['debug_frobnosticator']
  • 新しい設定値にアクセスする必要があるランタイムコードでは、 `` registry.settings``ディクショナリ内の値を見つけてそれを使用します。 in:term: view`コード(またはリクエストにアクセスできる他のコード)では、これを行う最も簡単な方法は `request.registry.settings``です。例えば:

    settings = request.registry.settings
    debug_frobnosticator = settings['debug_frobnosticator']
    

    リクエストにアクセスできないコードの値を使用したい場合は、その値を使用するには、:func: pyramid.threadlocal.get_current_registry APIを使用して現在のレジストリを取得する必要があります。 `` settings``属性を求めてください。例えば:

    registry = pyramid.threadlocal.get_current_registry()
    settings = registry.settings
    debug_frobnosticator = settings['debug_frobnosticator']