در pyramid_assetgen فرمت هرم که اجازه می دهد تا شما را به ادغام Assetgen با یک پروژه هرم است.
شامل بسته، تنظیم کارخانه درخواست سفارشی (با استفاده از AssetGenRequestMixin به عنوان کلاس اول شما را از به ارث می برند):
MyRequest کلاس (AssetGenRequestMixin، درخواست): پاس
config.set_request_factory (MyRequest)
config.include ('pyramid_assetgen')
با استفاده از دستور پیکربندی add_assetgen_manifest به معاشرت فایل مانیفست Assetgen با یک دایرکتوری شخص
config.add_static_view ('شخص'، 'mypkg: شخص')
# پیش فرض برای یک فایل assets.json نگاه در همان شاخه
config.add_assetgen_manifest ('mypkg: شخص')
و پس از آن فقط به صورت عادی استفاده ساخته شده است در request.static_url هرم را (راه، ** کیلو وات).
بنیاد و پایه
Assetgen یک ابزار فایل ساخت استاتیک می باشد. هنگامی که با استفاده از در تولید، شما می توانید حالت هش کردن آن به فایل های خروجی با یک رشته هش در نام فایل را فعال کنید. این به این معنی که هنگامی که شما تغییر یک فایل (برای مثال، شاید به روز رسانی سایت شما شیوه) نام خود را تغییر خواهد کرد.
از یک طرف این خبر بسیار عالی است، آن را به عنوان شما اجازه می دهد برای پیاده سازی یک استراتژی بهینه HTTP ذخیره (گفتن مشتریان مرورگر به کش فایل های شخص خود را برای همیشه). از طرف دیگر، به این معنی که شما نیاز به به روز رسانی قالب و / یا مشاهده کد برای خدمت به URL حق برطرف به نام فایل هش. این است که نسبتا آسان هنگامی که شما با استفاده از هرم به عنوان شما در حال حاضر با استفاده از یک تابع پویا برای تولید URL های شخص شما: request.static_url.
این بسته، pyramid_assetgen گسترش ماشین آلات هرم به طور خودکار به روز رسانی آدرس ها شخص خود را به طوری که آنها به نام فایل هش درست حل و فصل. شما می توانید آن را به ادغام Assetgen با برنامه هرم خود را بدون نیاز به تغییر هر یک از قالب خود و یا نمایش کد و یا یادگیری هر رابط های برنامه کاربردی جدید استفاده کنید.
گردش کار
اگر شما یک برنامه هرم پیکربندی برای یک فایل مانیفست نگاه کنید، سپس فایل نیاز به وجود داشته باشد، در غیر این صورت کاربرد آن یک استثنا (در زمان پیکربندی) پرتاب. شما در نتیجه باید ساخت فایل مانیفست خود را با استفاده از چیزی شبیه به:
assetgen و غیره / assetgen.yaml --force
قبل از اینکه شما برنامه هرم خود را اجرا با چیزی شبیه به:
pserve و غیره / production.ini
اگر در حال اجرا در حالت توسعه با استفاده از [paste.reloader]، به عنوان مثال:
pserve و غیره / development.ini --reload
شما می توانید فایل مانیفست خود را به لیست فایل های reloader باید با استفاده از، به عنوان مثال تماشای اضافه کنید:
از paste.reloader واردات add_file_callback
watch_manifest_files دف ():
& nbsp؛ از بازگشت ['/var/www/static/assets.json'،]
add_file_callback (watch_manifest_files)
با این حال، شما بعید است که نیاز به این دارید، به شما به عنوان نباید خودکار بازنگری در تولید و در حالت توسعه شما باید فایل های assetgen خود هش نیست.
پیکر بندی
اگر ما فرض پیکربندی یک نمونه pyramid.config.Configurator، (شاید در اصلی / WSGI تابع کارخانه برنامه شما در دسترس) است، ما می توانیم دستور یا با استفاده از اضافه کردن:
از pyramid_assetgen add_assetgen_manifest واردات
config.add_directive ('add_assetgen_manifest'، add_assetgen_manifest)
و یا به سادگی بیشتر:
config.include ('pyramid_assetgen')
علاوه بر این، شما نیاز به گسترش کارخانه درخواست به طور پیش فرض با استفاده از، به عنوان مثال:
از pyramid.request درخواست واردات
از pyramid_assetgen AssetGenRequestMixin واردات
MyRequest کلاس (AssetGenRequestMixin، درخواست):
& nbsp؛ از پاس
config.set_request_factory (MyRequest)
(توجه داشته باشید که بحث AssetGenRequestMixin باید قبل از درخواست در تعریف درخواست کلاس کارخانه خود آمده است. در غیر این صورت از روش static_url خواهد باطل نمی شود).
استفاده
با این تنظیمات، هنگامی که شما یک دایرکتوری شخص در معرض استفاده از config.add_static_view، شما هم اکنون می توانید آشکار Assetgen مرتبط با آن:
config.add_static_view ('شخص'، 'mypkg: شخص')
config.add_assetgen_manifest ('mypkg: شخص')
شخص / assets.json: این برای یک فایل مانیفست در mypkg نگاه کنید. اگر پرونده استفاده در جایی دیگر است:
config.add_assetgen_manifest ('mypkg: شخص، آشکار =' / مواد غذایی / bar.json ')
بعد از آن شما می توانید استفاده کنید request.static_path و request.static_url به صورت عادی. بنابراین، برای مثال، اگر شما ثبت نام کرده اند آشکار شامل:
{'foo.js': 'تولی fdsf465ds4f567ds4ds5674567f4s7.js'}
تلفن:
request.static_path ('mypkg: شخص / foo.js')
بر خواهد گشت:
'/static/foo-fdsf465ds4f567ds4ds5674567f4s7.js'
تست
من تست تحت Python2.6 و Python3.2 با استفاده از، به عنوان مثال اجرا:
$ ../bin/nosetests --cover-بسته = SRC / pyramid_assetgen --cover-پاک کردن --with-پوشش --with-doctest
.......
نام و نام خانوادگی Stmts خانم جلد گم شده
-------------------------------------------------- -----------------
SRC / pyramid_assetgen / __ init__ 59 0 100٪
SRC / pyramid_assetgen / آزمون / __ init__ 58 0 100٪
-------------------------------------------------- -----------------
کل 117 0 100٪
-------------------------------------------------- --------------------
7 آزمون در 0.552s ران
OK
مورد نیاز:
پایتون
هرم
نظر یافت نشد