跳转到主要内容

增强Chameleon模板引擎与Plone的集成

项目描述

简介

本软件包通过Chameleonfive.pt增强了Plone的集成。

在我们的部署中,我们有源代码检查(git),这些代码在更新时被拉取。这可能导致运行实例中的模板在下一个请求时更新,这可能导致错误,因为相关的代码尚未重新加载,因为Zope实例尚未重启。为了使其更加健壮,我们使用启用预加载并禁用自动重新加载的Chameleon,这样在实例启动后,它将不再读取模板。

当使用five.ptChameleonViewPageTemplateFile实例结合使用时,这些选项不符合预期。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

在启动时解析和编译模板。

truefalse

true

CHAMELEON_RELOAD(仅适用于Plone4)

当模板更改时重新加载模板。

truefalse

false

CHAMELEON_CACHE

文件系统缓存。

缓存目录的路径。

.../var/chameleon-cache

FTW_CHAMELEON_RECOOK_WARNING

在重新烹饪模板时发出警告。

truefalse

true

FTW_CHAMELEON_RECOOK_EXCEPTION

在重新烹饪模板时引发异常。

truefalse

当使用Sentry时为true。

另请参阅Chameleon文档

开发

  1. 分支此存储库

  2. 克隆您的分支

  3. Shell:ln -s development.cfg buildout.cfg

  4. Shell:python bootstrap.py

  5. Shell:bin/buildout

运行bin/test以测试您的更改。

或者通过运行bin/instance fg来启动实例。

变更日志

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 (17.8 kB 查看哈希值)

上传时间

由以下支持