2013-03-12 25 views
2

我正在使用quintagroup.transmogrifier,我想提供我的'import.cfg'管道。通常情況下,我會把這樣的事情在overrides.zcml:重寫變身變種:registerConfig不使用overrides.zcml

<include package="collective.transmogrifier" file="meta.zcml" /> 
<transmogrifier:registerConfig 
    name="import" 
    title="Import pipeline configuration" 
    description="My custom import pipeline." 
    configuration="import.cfg" 
    /> 

幾個人指出,使用overrides.zcml不推薦。此外,我在測試中加載overrides.zcml有很大的麻煩 - 我得到了重複的配置錯誤等。所以我的問題是如何在不使用overrides.zcml的情況下完成我的任務(提供自己的管道)?

+0

爲什麼你需要首先使用'overrides.zcml'?爲什麼不在'configure.zcml'中註冊?不要告訴我Quintagroup要求你重寫這個,那會是..我們應該說...短視嗎? – 2013-03-12 13:17:02

+0

AFAIU他們的代碼,是的,你需要覆蓋它,因爲他們尋找一個「導入」管道,我沒有看到任何我可以告訴q.transmogrifier使用不同的管道名稱進行導入。 – zupo 2013-03-12 13:29:25

+1

/我把他的頭埋在他的手中。 – 2013-03-12 13:29:56

回答

2

我認爲overrides.zcml棄用背後的原因是由於一些黑魔法是爲了加載它們(您必須在您的p.a.testing設置中複製)而完成的,這可能是由zope服務器完成的其啓動程序。

不幸的是,我不知道有什麼比直接在configuration_registry(位於collective.transmogrifier.transmogrifier,它是全局的)上更好。如果您直接撥打registerConfig,您應該可以覆蓋它,但比使用overrides.zcml更髒。

另一種可能尋找到zope.configuration,看看你是否可以通過代碼做覆蓋...

+1

最後,我在我的測試層設置中加載了overrides.zcml之前,清除了()transmogrifier configuration_registry。謝謝你的提示! – zupo 2013-03-13 10:16:51