2012-06-11 4 views
5

ピラミッドでは、実行時環境によってGoogleテンプレートをレンダリングする必要があります(Googleアナリティクスを有効にし、縮小されたコードを使用するなど)。現在の環境を簡単に見つける方法はありますか?おそらく、どのiniファイルが使用されているかを知るための既存のフラグですか?ピラミッドでランタイム環境を見つける簡単な方法はありますか?

答えて

15

ピラミッドINIをファイルにはarbitrary configuration entriesを含めることができるので、運用環境と開発環境を区別するフラグをファイルに含めないでください。

私はこのようにします。

[app:main] 
production_deployment = True # Set to False in your development .ini file 

峠ピラミッドコンフィギュレータへのこの値:本番.iniファイルに

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

今、あなたのピラミッドのコードでちょうど約どこからでも設定にアクセスすることができます。たとえば、リクエストハンドラでは:

settings = request.registry.settings 
if settings['production_deployment']: 
    # Enable some production code here. 

ただし、この場合はさらに細かい設定を使用します。 Googleアナリティクスを有効にするためのフラグ、リソースを縮小するためのフラグなどがあります。開発環境の個々の設定をテストしたり、これらのスイッチのユニットテストを作成したりできます。

+0

Sweet bro!そのヒントをありがとう –

3

私はos.environで見ることができるPYRAMID_ENVのような名前の環境変数としてこの種のものを設定しました。例えば、あなたのコードで:サーバを起動するときに

import os 

pyramid_env = os.environ.get('PYRAMID_ENV', 'debug') 

if pyramid_env == 'debug': 
    # Setup debug things... 
else: 
    # Setup production things... 

その後、initスクリプトで変数を設定したりすることができます環境変数へのアクセスに

PYRAMID_ENV=production python server.py 

ドキュメント:http://docs.python.org/library/os.html#os.environ

関連する問題