用于添加缺失接口的 Monkey 补丁

Monkey patch to add a missing interface

如何使用collective.monkeypatchersomeproduct中添加IFooBar

这是我试过的,但它是错误的(因为IFooBar在原始产品中不存在。)

<monkey:patch description="Create missing FooBar interface"
              class="someproduct.interfaces.IFooBar"
              original="IFooBar"
              replacement="myproduct.patches.IFooBar"
              docstringWarning="true" />

错误是ConfigurationError: ('Invalid value for', 'class', 'ImportError: Module someproduct.interfaces has no global IFooBar')

我的最终目标是跳过此错误:PicklingError: Can't pickle <class 'someproduct.interfaces.IFooBar'>: attribute lookup someproduct.interfaces.IFooBar failed 在我尝试激活/停用加载项时收到。

这是因为我安装了新版本的 someproductIFooBar,然后我恢复到旧版本(没有 IFooBar)没有卸载插件-上。

更新:

替换行:

class="someproduct.interfaces.IFooBar"

class="someproduct.interfaces"

这是一回事。错误: ConfigurationError: Original IFooBar in <module 'someproduct.interfaces' from '/plone/buildout-cache/eggs/someproduct-1.2-py2.7.egg/some/path/interfaces.pyc'> not found.

哦。只需添加:ignoreOriginal="true"