On Jun 28, 7:50 pm, Mike Orr <[email protected]> wrote:
> On Sun, Jun 28, 2009 at 4:35 PM, Thomas G. Willis<[email protected]> wrote:
>
> > On Jun 25, 7:29 pm, "Thomas G. Willis" <[email protected]> wrote:
>
> >> > > Would  you mind elaborating? It seems it should work. Doesn't routes
> >> > > just pick up the SCRIPT_NAME and PATH_INFO from environ? And isn't the
> >> > > purpose of the above map.connect to set those 2 variables
> >> > > appropriately? What's the magic I'm missing?
>
> >> > It should be OK.  'path_info' is a magic variable that sets the real
> >> > SCRIPT_NAME and PATH_INFO to the subapplication, as well as setting
> >> > the routing variable.
>
> >> > I wonder if you have the same controller_scan problem I mentioned in
> >> > an earlier message today.  If so, instantiate your route map with a
> >> > list of controller names you think should be valid, and see if that
> >> > clears up the problem.
>
> >> >     def my_controllers():
> >> >         return ["registration"]
> >> >     map = routes.Mapper(controller_scan=my_controllers)
>
> >> > Also turn on full debug logging.  (Set the root logger to debug, or a
> >> > logger for routes.middleware.)
>
> >> > I would think that a 404 indicates a routing problem.  A missing
> >> > controller module would raise ImportError, and a malformed controller
> >> > would raise something else.  Make sure you're in development mode.
> >> > (In production mode, missing controllers are disguised as 404s I
> >> > think.)
>
> >> > I hope that nested Pylons applications work because I want to split up
> >> > one of my applications this summer.
>
> >> > Be sure to set full_stack=False in the myapp.middleware.make_app()
> >> > call.  I think you may also want to adjust the 'if full_stack:' in the
> >> > function because the default doesn't look quite right to me.  I think
> >> > you want the outer app to handle sessions and errors but the inner app
> >> > to have its own routing, no?
>
> >> > Because of the 'full_stack' argument, it may not be appropriate to
> >> > instantiate the inner app via paste.deploy.  You may have better luck
> >> > calling make_app directly, and creating the desired configuration
> >> > variables in the pseudo-controller module.  That is, assuming you're
> >> > not passing a lot of variables through from the top-level
> >> > configuration.
>
> >> > You can also set the WSGI application to __controller__ rather than
> >> > RegistrationController. Or you may want a custom __controller__
> >> > function that instantiates the application with a particular
> >> > configuration and returns it.
>
> >> > --
> >> > Mike Orr <[email protected]>
>
> >> OK lots of stuff to learn and try thanks for the suggestions. If I
> >> figure out anything I'll share.
>
> > OK, I think i've gotten to the bottom of the cause of the 404 but I
> > don't know what the solution is.
>
> > Basically, the contained app is looking in the container app for the
> > controller to dispatch to, and doesn't find it and a 404 bubbles up. I
> > suppose this is would be an issue with all paths that get set in
> > load_environment. Is there a pylons dev around willing to shine some
> > light on this?
>
> The inner application is trying to find the controller in the outer
> app's controller path?  They should have two separate 'config's, I
> would think.  You're getting into the rare case where two Pylons apps
> are sharing the same process.  The globals (pylons.config, etc) are
> StackedObjectProxies for just this reason, so that each application
> can push the correct objects onto the globals while it's active.
> Perhaps this isn't working right.  Since you can't get to a
> controller, the only place to test this definitively would be to put
> logging statements in pylons.wsgiapp.PylonsApp.find_controller().  You
> could put something like this in:
>
> 'import pprint
> from pylons import config
> log.debug("configuration is %s", pprint.pformat(config._current_obj()))
>
> And look for any differences that would prove which configuration or
> paths it's using.  Be sure to set the root logger to DEBUG in
> development.ini; otherwise it won't show.
>
> --
> Mike Orr <[email protected]>

yep it seems they are using the same config. I put the logging in
wsgiapp.py in an except clause....

        # Hide the traceback here if the import fails (bad syntax and
such)
        __traceback_hide__ = 'before_and_this'
        try:
            __import__(full_module_name)
        except Exception, ex:
            import pprint
            from pylons import config
            log.debug("configuration is %s" % pprint.pformat
(config._current_obj()))
            raise ex


20:13:19,015 DEBUG [pylons.wsgiapp] configuration is {'__file__': '/
home/twillis/projects/twsgi/src/container/development.ini',

whereas in my controller I have

#helloembed.py
app = loadapp("config:/home/twillis/projects/twsgi/src/embedded/
development.ini")

HelloembedController = app


I should've mentioned this in my original post, python2.6 virtualenv
on ubuntu 9.04


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to