2015-05-20 4 views
4

В одном из buildout.cfg файлов моих проектов у меня есть что-то вроде этого:Что такое buildout: опция zcml?

[buildout] 
... 
zcml = 
    my.package 
    plone.reload 
... 

Все работает нормально, но я все еще озадачен о том, что причина, некоторые пакеты действительно должны быть перечислены здесь и почему другие дон «т.

С какой целью это для начала?

Хотя делать некоторые исследования, я в конечном итоге на https://pypi.python.org/pypi/munin.zope/2.1, который говорит, что если вы используете z3c.autoinclude и Plone (+3,3) не нужно.

Означает ли это, что если распределение имеет z3c.autoinclude слизняка на ИТС setup.py, т.е.

entry_points=""" 
# -*- Entry points: -*- 
[z3c.autoinclude.plugin] 
target = plone 
""", 

вам не придется заботиться о buildout:zcml?

+2

Точно, все пакеты, которые вы используете, должны иметь 'z3c.autoinclude slug', поэтому загрузка zcml вручную не требуется. Кстати: я никогда не определял 'zcml' в части сборки, как яйца. – Mathias

+0

Кстати, автоматическое включение экономит время из первых рук, но есть также критические голоса вокруг, указывая, что «Явный лучше, чем неявный». См. Г. Шапель: http://bubblenet.be/blog/lets-get-rid-of-z3c.autoinclude и DJ Beitey: http: //davidjb.com/blog/2010/07/plone-overrides-zcml- получает-авто-включено-с-z3c-Включать автоматически / –

ответ

5

Там не никакой внутренней функциональности связана с параметром zcml в секции [Buildout], кроме удобного места для определения zcml.

Обычно секция [пример] будет ссылаться на него:

[instance] 
recipe = plone.recipe.zope2instance 
eggs = Plone 
zcml = ${buildout:zcml} 

The use of buildout:zcml similar to buildout:eggs is an anti-pattern, IMO

1

В файлах конфигурации Buildout, name=value можно использовать двумя способами:

  • указать значение для имени, которое имеет предопределенные функциональные возможности
  • , чтобы присвоить имя значению во избежание копирования и вставки.

buildout:zcml является примером второго случая.

Другими словами, единственной причиной использования buildout:zcml было бы использование его значения в разных местах.

Однако, когда мне нужно повторно использовать zcml, я бы скорее определил его в части plone.recipe.zope2instance. И повторно используйте это значение в другой части.