2012-06-11 5 views
5

'daki çalışma zamanı ortamını bulmanın kolay bir yolu var. Piramidte, şablonlarımı farklı çalışma zamanı ortamlarına göre oluşturmam gerekiyor - google analitiği etkinleştirin, minified code kullanın, vb. (Üretim sırasında). Mevcut ortamı bulmak için kolay bir yol var - hangi ini dosyasının kullanıldığını bulmak için mevcut bir bayrak olabilir mi?Pyramid

cevap

15

Piramit INI: çevresel değişkenlere erişimi

PYRAMID_ENV=production python server.py 

Dokümanlar dosyalar arbitrary configuration entries'u tutabilir, bu nedenle dosyalarınızda üretim ve geliştirme dağıtımları arasında ayrım yapan bir bayrak neden olmasın?

Böyle yapardım;

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

Geçiş Piramit Konfiguratörüne bu değer: Üretim .ini dosyasında

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) 

Artık Piramit kodunda hemen her yerden ayarlara erişebilirsiniz. Örneğin, bir istek işleyicide:

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

Bununla birlikte, bu durumda daha ayrıntılı ayarları da kullanabilirim; Google Analytics'i etkinleştirmek için bir kaynak, kaynakları küçültmek için, vb. Bu şekilde geliştirme ortamınızdaki her bir ayarı test edebileceğiniz şekilde, bu anahtarlar için birim testleri yazabilirsiniz.

+0

Tatlı bro! Bu ipuçları için teşekkürler –

3

Bu tür bir şeyi, os.environ aracılığıyla görülebilen PYRAMID_ENV gibi bir değişken adlı bir çevresel değişken olarak ayarlıyorum. Kodunuzdaki Örneğin:

import os 

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

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

Sonra başlatma betiğindeki değişkeni olarak ayarlayabilir veya sunucuyu başlatırken: http://docs.python.org/library/os.html#os.environ