跳转到主要内容

此包允许您在没有zodb的情况下运行grok。

项目描述

此包的主要目的是提供支持,使Grok应用程序可以作为不使用zodb的WSGI应用程序运行。

使用megrok.nozodb

要设置一个没有zodb的工作grok环境,您必须替换位于debug.ini和deploy.ini中的paster-application-factory:具体来说,将grokcore.startup#…替换为megrok.nozodb#nozodb

[app:grok] use = egg:megrok.nozodb#nozodb

接下来,您需要设置一个全局实用工具,它充当ApplicationRoot,这是您应用程序的起点。megrok.nozodb有一个未加工的默认值。您可以从中派生或提供自己的东西,它充当ApplicationRoot。

>>> from megrok.nozodb import ApplicationRoot

>>> class MyApplicationRoot(ApplicationRoot):
...     pass

>>> myapp = MyApplicationRoot()
>>> from zope.site.interfaces import IRootFolder
>>> IRootFolder.providedBy(myapp)
True

>>> from grok.interfaces import IApplication
>>> IApplication.providedBy(myapp)
True

>>> from zope.location import ILocation
>>> ILocation.providedBy(myapp)
True

>>> from zope.interface.verify import verifyObject
>>> from zope.component.interfaces import ISite
>>> verifyObject(ISite, myapp)
True

API文档

我们需要创建一个简单的站点定义文件,它也很简单

 >>> import os, tempfile
 >>> temp_dir = tempfile.mkdtemp()

 >>> sitezcml = os.path.join(temp_dir, 'site.zcml')
 >>> open(sitezcml, 'w').write('<configure />')

 >>> zope_conf = os.path.join(temp_dir, 'zope.conf')
 >>> open(zope_conf, 'wb').write('''
 ... site-definition %s
 ...
 ... <zodb>
 ... </zodb>
 ...
 ... <eventlog>
 ...   <logfile>
 ...     path STDOUT
 ...   </logfile>
 ... </eventlog>
 ... ''' %sitezcml)


 >>> from megrok.nozodb import nozodb_factory
 >>> app_factory = nozodb_factory({'zope_conf': zope_conf})

Clean up the temp_dir

  >>> import shutil
  >>> shutil.rmtree(temp_dir)

变更日志

0.1 (2010-11-04)

  • 首次发布

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面