[Zope-dev] app = Zope.app() backwards incompatibility notice / discussion

Erik A.Dahl edahl at zentinel.com
Mon Dec 22 09:09:36 EST 2003


I do this dance a lot and this sounds fine to me.  I tried using 
zopectl run with my scripts but you couldn't pass parameters to the 
script (which lowered the usefulness for me).

-EAD

On Dec 21, 2003, at 6:16 PM, Chris McDonough wrote:

> The extant "import Zope; app = Zope.app()" dance to get a hold of the
> Zope root object stopped working long ago on the 2.7 branch and HEAD 
> due
> to the new configuration machinery, which implies that users be 
> explicit
> about configuration settings rather than allowing Zope to guess.
>
> Up til now, the dance to get Zope 2.7 to start properly from within a
> script was byzantine and obscure.  I've made a checkin which makes it a
> little easier (or at least I'm about to as soon as the full unit test
> suite comes back passed ;-).
>
> Code which used to do:
>
>  import Zope
>  app = Zope.app()
>
> Will need to do this under 2.7b4+:
>
>  import Zope
>  Zope.configure('/path/to/configfile')
>  app = Zope.app()
>
> (I wont bother telling you what the dance was for 2.7 before now, it 
> was
> pretty awful).
>
> I realize this is suboptimal from a backwards compatibility 
> perspective,
> but I'm not sure how to make it any better, seeing as the config file
> has some fairly important information in it (like which databases to
> use) and guessing would be very bad in this context.
>
> Jim Roepke suggested that if an "ZOPE_CONFIG" envvar was set with the
> config file path, that "import Zope; Zope.app()" could be made to "just
> work", but I'm not sure this is any better than requiring that
> developers change their scripts.  Guessing at the config file location
> is also fraught with problems, and I'd be hesitant to do it.
>
> I'm apt just to recommend that we require that developers add the
> "Zope.configure(filename)" line to their scripts as opposed to doing
> anything more magical.  I'm sure there will be indignant wails about 
> it,
> but c'est la vie. ;-)
>
> Note that FWIW, you can also do (on UNIX):
>
>   zopectl run <scriptname>
>
> .. which will run a script with the name "app" set up as the root Zope
> application object.  This might be the easiest way to run scripts which
> need to operate against Zope objects going forward.
>
> - C
>
>
>
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev at zope.org
> http://mail.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists -
>  http://mail.zope.org/mailman/listinfo/zope-announce
>  http://mail.zope.org/mailman/listinfo/zope )




More information about the Zope-Dev mailing list