增强Chameleon模板引擎与Plone的集成
项目描述
简介
本软件包通过Chameleon和five.pt增强了Plone的集成。
在我们的部署中,我们有源代码检查(git),这些代码在更新时被拉取。这可能导致运行实例中的模板在下一个请求时更新,这可能导致错误,因为相关的代码尚未重新加载,因为Zope实例尚未重启。为了使其更加健壮,我们使用启用预加载并禁用自动重新加载的Chameleon,这样在实例启动后,它将不再读取模板。
当使用five.pt将Chameleon与ViewPageTemplateFile实例结合使用时,这些选项不符合预期。ftw.chameleon包含使这得以顺利工作的增强功能。
增强功能
在Plone 4上修补了zope.pagetemplate,使其考虑CHAMELEON_RELOAD配置:当禁用CHAMELEON_RELOAD时,即使模板已更改,它也不会触发模板的重新烹饪。CHAMELEON_RELOAD在Plone 5中不可用,因为它已经修补了zope.pagetemplate,以防止在生产模式下重新烹饪模板(这是我们的唯一关注点)。
当启用CHAMELEON_EAGER时,所有模板将在启动时进行烹饪。这是通过在单独的线程中显式烹饪所有已知的模板来完成的。
当Chameleon编译模板时,触发事件。
在模板意外编译时记录警告或引发异常。这有助于确定无法缓存的模板的问题。
当启用CHAMELEON_EAGER时,在Plone站点上的第一个请求后,将烹饪portal_skins中的模板。
兼容性
Plone 4.3.x和Plone 5.1.x。
安装
针对生产环境的Buildout示例
[instance]
eggs +=
ftw.chameleon
environment-vars +=
CHAMELEON_EAGER true
CHAMELEON_RELOAD false
CHAMELEON_CACHE ${buildout:directory}/var/chameleon-cache
FTW_CHAMELEON_RECOOK_WARNING true
针对开发环境的Buildout示例
[instance]
eggs +=
ftw.chameleon
environment-vars +=
CHAMELEON_RELOAD true
CHAMELEON_CACHE ${buildout:directory}/var/chameleon-cache
您需要确保缓存目录存在。这可以通过buildout来完成
[buildout]
parts += chameleon-cache
[chameleon-cache]
directory = ${buildout:directory}/var/chameleon-cache
recipe = collective.recipe.shelloutput
commands =
cmd1 = mkdir -p ${chameleon-cache:directory}
[instance]
environment-vars +=
CHAMELEON_CACHE ${chameleon-cache:directory}
环境变量
名称 |
描述 |
值 |
建议 |
CHAMELEON_EAGER |
在启动时解析和编译模板。 |
true,false |
true |
CHAMELEON_RELOAD(仅适用于Plone4) |
当模板更改时重新加载模板。 |
true,false |
false |
CHAMELEON_CACHE |
文件系统缓存。 |
缓存目录的路径。 |
.../var/chameleon-cache |
FTW_CHAMELEON_RECOOK_WARNING |
在重新烹饪模板时发出警告。 |
true,false |
true |
FTW_CHAMELEON_RECOOK_EXCEPTION |
在重新烹饪模板时引发异常。 |
true,false |
当使用Sentry时为true。 |
另请参阅Chameleon文档。
开发
分支此存储库
克隆您的分支
Shell:ln -s development.cfg buildout.cfg
Shell:python bootstrap.py
Shell:bin/buildout
运行bin/test以测试您的更改。
或者通过运行bin/instance fg来启动实例。
链接
版权
本软件包的版权由4teamwork拥有。
ftw.chameleon采用GNU通用公共许可证,版本2。
变更日志
1.3.0 (2019-10-01)
为Plone 5.1添加支持。[mbaechtold]
修复Plone 5.1的测试。[djowett-ftw]
在Plone 5中删除CHAMELEON_RELOAD选项,因为它在生产模式下运行时不重新烹饪模板(这是我们唯一关注的问题)。[djowett-ftw]
1.2.0 (2017-12-04)
需要 five.pt < 3.0。[mbaechtold]
将变更日志添加到软件包的详细描述中 [raphael-s]
1.1.2 (2017-06-26)
在precook_templates()中跳过持久性模板,以避免尝试在关闭的ZODB连接上操作。[lgraf]
1.1.1 (2016-11-21)
修复日志记录器名称(原为 ftw.ptcache)。[jone]
1.1.0 (2016-10-25)
预煮z3c.jbot注册的模板。[jone]
1.0.0 (2016-10-03)
初始实现。
项目详情
ftw.chameleon-1.3.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7d4e08233913356fd4cecc75b94f6d1e0ee5b9c4186e704fafd39b93816c48ad |
|
MD5 | 5a43e3f1bc9e8837354a88dbc231460b |
|
BLAKE2b-256 | 82ec82f4c3da34c9c99e265e7440cb5163bea8b4a52b030ebafa11cada6883e0 |