pyramid_assetgen je rozšíření pyramida, která umožňuje integrovat Assetgen s projektem Pyramid.
Zahrnout balíček, nastavit vlastní požadavku továrnu (pomocí AssetGenRequestMixin jako první třídy, kterou zdědil od):
třída MyRequest (AssetGenRequestMixin, Request): průchod
config.set_request_factory (MyRequest)
config.include ("pyramid_assetgen")
Pomocí direktivy konfigurace add_assetgen_manifest přidružit soubor manifestu Assetgen se statickou adresáři:
config.add_static_view ("statické", "mypkg: static")
# výchozí hledat soubor assets.json ve stejném adresáři
config.add_assetgen_manifest ("mypkg: static")
A pak stačí použít vestavěný-in request.static_url pyramidy (cesta, ** kW) jako obvykle.
Odůvodnění
Assetgen je statický soubor build nástroj. Při použití ve výrobě, můžete povolit jeho režim hash pro výstupní soubory s hash v názvu souboru. To znamená, že když změníte soubor (například, možná aktualizace styl vašeho webu), jeho název se změní.
Na jedné straně to je skvělá zpráva, protože vám umožní realizovat optimální HTTP cache strategie (říkat klientům prohlížeče mezipaměti statické soubory navždy). Na druhé straně, to znamená, že je třeba aktualizovat šablony a / nebo zobrazení kódu sloužit správnou adresu URL řeší na hash souboru. To je poměrně jednoduché, když používáte pyramidu, jak jste již používáte dynamické funkci vygenerovat statické URL: request.static_url.
Tento balíček, pyramid_assetgen rozšiřuje stroje pyramida, aby automaticky aktualizovat své statické adresy URL, aby se rozhodly správnými jmény čárkovaná souborů. Můžete ji použít k integraci Assetgen s Pyramid aplikací bez nutnosti měnit některý z vašich šablon nebo zobrazení Kód nebo se učit žádné nové API.
Workflow
Pokud spustíte aplikaci Pyramid konfigurovaný hledat souboru manifestu, pak soubor musí být tam, jinak se aplikace bude hodit výjimku (v době konfigurace). Měli byste tedy vytvořit svůj soubor manifestu pomocí něco jako:
assetgen etc / assetgen.yaml --force
Před spuštěním svůj Pyramid aplikace s něčím, jako je:
pserve etc / production.ini
Pokud běží v režimu vývoje pomocí [paste.reloader], např:
pserve etc / development.ini --reload
Dalo by se přidat soubor manifestu do seznamu souborů Reloader dávat pozor použití, např:
od paste.reloader dovozu add_file_callback
DEF watch_manifest_files ():
& Nbsp; návrat ['/var/www/static/assets.json ",]
add_file_callback (watch_manifest_files)
Nicméně, budete pravděpodobně potřebovat, jak byste neměli ani auto-reload ve výrobě a ve vývojovém režimu, neměli byste hash vaše assetgen soubory.
Configuration
Budeme-li předpokládat, config, je instance pyramid.config.Configurator, (možná k dispozici ve vašem hlavním / WSGI app tovární funkce), můžeme přidat směrnici buď pomocí:
od pyramid_assetgen dovozu add_assetgen_manifest
config.add_directive ("add_assetgen_manifest", add_assetgen_manifest)
Nebo ještě jednodušeji:
config.include ("pyramid_assetgen")
Kromě toho, budete muset rozšířit standardní požadavek továrnu použití, např:
od pyramid.request dovozu Request
od pyramid_assetgen dovozu AssetGenRequestMixin
třída MyRequest (AssetGenRequestMixin, Request):
& Nbsp; průchod
config.set_request_factory (MyRequest)
(Všimněte si, že AssetGenRequestMixin argumentace musí přijít před objednávku ve svém vymezení požadavek tovární třídy. V opačném případě nebude přepsána metoda static_url).
Použít
S touto konfigurací, když vystavit statické adresáře pomocí config.add_static_view, nyní můžete přidružit manifest Assetgen s ní:
config.add_static_view ("statické", "mypkg: static")
config.add_assetgen_manifest ("mypkg: static")
To bude hledat souboru manifestu v mypkg: static / assets.json. V případě, že soubor je někde jinde využití:
config.add_assetgen_manifest ("mypkg: static" manifest = '/ foo / bar.json ")
Potom můžete použít request.static_path a request.static_url jako obvykle. Tak například, pokud jste zaregistrovali manifest, který obsahuje:
{"foo.js": "foo-fdsf465ds4f567ds4ds5674567f4s7.js"}
Volání:
request.static_path ("mypkg: static / foo.js")
Vrátí:
"/static/foo-fdsf465ds4f567ds4ds5674567f4s7.js"
Testy
Já jsem běžet zkoušek za Python2.6 a Python3.2 pomocí, např:
$ ../bin/nosetests --cover-balení = src / pyramid_assetgen --cover-vymazání --with-pokrytí --with-doctest
.......
Jméno Stmts Slečna Cover chybějící
-------------------------------------------------- -----------------
src / pyramid_assetgen / __ init__ 59 0 100%
src / pyramid_assetgen / testy / __ init__ 58 0 100%
-------------------------------------------------- -----------------
CELKEM 117 0 100%
-------------------------------------------------- --------------------
Ran 7 testy 0.552s
OK
Požadavky na :
- Python
- pyramida
Komentáře nebyl nalezen