pyramid_assetgen는 피라미드 프로젝트 Assetgen를 통합 할 수 있습니다 피라미드 확장이다.
패키지를 포함, 사용자 정의 요청 공장 (첫 번째 클래스로 AssetGenRequestMixin를 사용하면 상속)을 설정합니다 :
클래스 MyRequest (AssetGenRequestMixin, 요청) : 패스
config.set_request_factory (MyRequest)
config.include ( 'pyramid_assetgen')
정적 디렉토리로 Assetgen 매니페스트 파일을 연결합니다 add_assetgen_manifest 설정 지시어를 사용하여
config.add_static_view ( '정적', 'MYPKG : 정적')
# 기본값은 같은 디렉토리에 assets.json 파일을 찾을 수 있습니다
config.add_assetgen_manifest ( 'MYPKG : 정적')
그리고 단지 정상적으로 피라미드의 내장 request.static_url (경로, ** kw)를 사용합니다.
이론적 해석
Assetgen는 정적 파일 빌드 도구입니다. 생산에 사용하는 경우 파일 이름에 해시 출력 파일의 해시 모드를 활성화 할 수 있습니다. 이렇게하면 이름이 변경됩니다 (아마도 사이트의 스타일 시트 업데이트, 예를 들어) 파일을 변경하면 것을 의미한다.
당신이 최적의 HTTP 캐싱 전략 (영원히 당신의 정적 파일을 캐시 브라우저 클라이언트를 이야기)을 구현할 수로 한편이 우수한 소식입니다. 다른 한편으로, 당신이 해시 파일 이름에 해결 할 수있는 권한 URL을 제공하는 템플릿 및 / 또는 뷰 코드를 업데이트해야 의미합니다. request.static_url을 : 이미 정적 URL을 생성하는 동적 기능을 사용하고 당신이 피라미드를 사용하는 경우는 상대적으로 쉽다.
이 패키지는, pyramid_assetgen은 올바른 해시 파일 이름에 해결되도록 자동으로 정적 URL을 업데이트 할 수있는 피라미드 기계를 확장합니다. 당신은 당신의 템플릿 또는 뷰 코드를 변경하거나 새로운 API를 배울 필요없이 피라미드 응용 프로그램과 Assetgen을 통합하는 데 사용할 수 있습니다.
워크 플로우
당신이 매니페스트 파일을 찾기 위해 구성된 피라미드 응용 프로그램을 실행하면, 파일이 다른 응용 프로그램 (구성시) 예외가 발생합니다, 거기에있을 필요가있다. 당신은 이와 같은 것을 사용하여 매니페스트 파일을 작성해야합니다 :
assetgen 등 / assetgen.yaml --force
당신은 같은 것을 사용하여 피라미드 응용 프로그램을 실행하기 전에 :
pserve 등 / production.ini
[paste.reloader]를 사용하여 개발 모드에서 실행하는 경우, 예를 들면 :
pserve 등 / development.ini --reload
당신은 장전은, 예를 사용하여주의해야 할 파일의 목록에 매니페스트 파일을 추가 할 수 있습니다 :
paste.reloader 수입 add_file_callback에서
데프 watch_manifest_files () :
& NBSP;, '/var/www/static/assets.json을'] 반환
add_file_callback (watch_manifest_files)
당신이 생산 및 개발 모드에 있지 자동 리로드 당신이 당신의 assetgen 파일을 해시하지 말아야하지만, 당신이 필요하지 않을 것입니다.
구성
우리는 설정은 (주 / WSGI 응용 프로그램 공장 기능 아마도 가능) pyramid.config.Configurator 인스턴스입니다 가정하면, 우리는 지시어 중 사용을 추가 할 수 있습니다 :
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 방법 오버라이드 (override) 할 수 없습니다 와서해야합니다).
용법
당신이 config.add_static_view을 사용하여 정적 디렉토리를 노출 할 때 그 구성을, 당신은 지금과 Assetgen 매니페스트를 연결할 수 있습니다 :
config.add_static_view ( '정적', 'MYPKG : 정적')
config.add_assetgen_manifest ( 'MYPKG : 정적')
정적 / assets.json :이 MYPKG에 매니페스트 파일을 찾을 것입니다. 파일이 다른 곳에서 사용하는 경우 :
config.add_assetgen_manifest ( 'MYPKG : 정적', 매니페스트 = '/ foo는 / 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가
.......
표현으로 미스 커버가 누락 된 이름
-------------------------------------------------- -----------------
SRC / pyramid_assetgen / __ 59 0 100 % init__
SRC / pyramid_assetgen / 테스트 / __ init__ 58 0 100 %
-------------------------------------------------- -----------------
총 117 0 100 %
-------------------------------------------------- --------------------
0.552s 7 테스트를 실행
OK
이 요구 사항 :
이 파이썬
피라미드
댓글을 찾을 수 없습니다