Hi,

I ran into this issue too this morning, and thanks to this thread I saved
hours of debugging.

It seems that pylons 1.0rc1 requires Routes >= 1.12. With those two
installed, I get 404 errors.

Doing the following solved the issue :

  easy_install 'pylons<0.9.99'
  easy_install 'Routes<0.12'

Cheers,

Christophe

2010/3/5 Anthony Theocharis <[email protected]>

> Hey Nicholas,
>
> (thread sidetrack ahead:)
>
> I've got a question about your first comment, that the latest TG2 is
> broken:
> what version of Python are you running? did you install to a new
> virtualenv? and do the tests fail, or is it just your application that
> breaks?
>
> Diez was also having trouble with the latest tip, but he hasn't replied as
> to what environment he was using when the problems occurred.
>
> I'm basically responsible for the latest changes in the repository, so I'd
> like to fix them, but everything works fine for me with a fresh virtualenv
> in python2.5.4.
>
> Thanks!
>
> -- Anthony
>
>
> On 4-Mar-10, at 4:02 PM, nicholas wrote:
>
>> OMG I just found the same problem.
>> This was exceedingly difficult to diagnose.
>> Especially since I just pulled down TG2 like yesterday and it was
>> broken...
>>
>> My diagnosis was something about environ['pylons.routes_dict']['url']
>> It use to remove the leading '/'.
>> Now it does not.
>>
>> When TGController tries to property intercept __before__ and __after__
>> it uses the 'url' to find the right object controller in which to find
>> __before__.
>>
>> ObjectDispatchController._get_routing_info() makes the assumption that
>> the url will not have a leading '/'
>>
>> I am not sure whether this is routes that is changing a contract, or
>> the Controller which is making a foolish assumption.
>>
>> Is there a bug I should add to?  Should I create a bug?
>>
>> n
>>
>>
>> On Mar 2, 2:37 am, nickphold <[email protected]> wrote:
>>
>>> Hey, just had a horrible time debugging an issue, turns out the new
>>> version of routes breaks something and causes all requests to 404 in
>>> at least python 2.5 and 2.6 for tg2. We fixed this issue by going back
>>> to 1.11. Not sure if this will help but here is a sample trace.
>>>
>>> serving on 0.0.0.0:50008 view athttp://127.0.0.1:50008
>>> 09:58:10,044 DEBUG [paste.httpserver.ThreadPool] Added task (0 tasks
>>> queued)
>>> 09:58:10,045 DEBUG [txn.140430996646160] new transaction
>>> 09:58:10,047 DEBUG [routes.middleware] Matched GET /notify/newSample
>>> 09:58:10,047 DEBUG [routes.middleware] Route path: '*url', defaults:
>>> {'action': u'routes_placeholder', 'controller': u'root'}
>>> 09:58:10,047 DEBUG [routes.middleware] Match dict: {'url': u'/notify/
>>> newSample', 'action': u'routes_placeholder', 'controller': u'root'}
>>> 09:58:10,047 DEBUG [pylons.wsgiapp] Setting up Pylons stacked object
>>> globals
>>> 09:58:10,048 DEBUG [pylons.wsgiapp] Resolved URL to controller:
>>> u'root'
>>> 09:58:10,051 DEBUG [tg.wsgiapp] Found controller, module:
>>> 'portalservice.controllers.root', class: 'RootController'
>>> 09:58:10,051 DEBUG [pylons.wsgiapp] Controller appears to be a class,
>>> instantiating
>>> 09:58:10,051 DEBUG [pylons.wsgiapp] Calling controller class with WSGI
>>> interface
>>> 09:58:10,052 DEBUG [pylons.controllers.core] Calling '__before__'
>>> method with keyword args: **{'pylons': <pylons.util.PylonsContext
>>> object at 0x320e810>, 'url': u'/notify/newSample', 'start_response':
>>> <function repl_start_response at 0x320ccf8>, 'controller': u'root',
>>> 'environ': {'routes.route': <routes.route.Route object at 0x3209850>,
>>> 'beaker.cache': <beaker.cache.CacheManager object at 0x3209b10>,
>>> 'toscawidgets.javascript.require_once': False, 'pylons.routes_dict':
>>> {'url': u'/notify/newSample', 'action': u'routes_placeholder',
>>> 'controller': u'root'}, 'beaker.get_session': <bound method
>>> SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware
>>> object at 0x3209a90>>, 'SCRIPT_NAME': '', 'webob.adhoc_attrs':
>>> {'language': 'en-us'}, 'REQUEST_METHOD': 'GET', 'PATH_INFO': '/notify/
>>> newSample', 'repoze.tm.active': True, 'SERVER_PROTOCOL': 'HTTP/1.0',
>>> 'QUERY_STRING': 'inj=fluorine&uj=756', 'paste.throw_errors': True,
>>> 'CONTENT_LENGTH': '0', 'HTTP_USER_AGENT': 'Python-urllib/1.17',
>>> 'SERVER_NAME': '0.0.0.0', 'REMOTE_ADDR': '127.0.0.1',
>>> 'pylons.environ_config': {'session': 'beaker.session', 'cache':
>>> 'beaker.cache'}, 'pylons.pylons': <pylons.util.PylonsContext object at
>>> 0x320e810>, 'wsgi.url_scheme': 'http', 'wsgiorg.routing_args':
>>> (<routes.util.URLGenerator object at 0x320e690>, {'url': u'/notify/
>>> newSample', 'action': u'routes_placeholder', 'controller': u'root'}),
>>> 'SERVER_PORT': '50008', 'toscawidgets.framework':
>>> <tw.mods.base.HostFramework object at 0x3209b90>, 'pylons.controller':
>>> <portalservice.controllers.root.RootController object at 0x320e8d0>,
>>> 'wsgi.input': <socket._fileobject object at 0x320c758 length=0>,
>>> 'HTTP_HOST': '127.0.0.1:50008', 'beaker.session': {'_id':
>>> '7b4f377cacb90c278345b48c9320cfff'}, 'wsgi.multithread': True,
>>> 'routes.url': <routes.util.URLGenerator object at 0x320e690>,
>>> 'wsgi.version': (1, 0), 'paste.registry': <paste.registry.Registry
>>> object at 0x320e210>, 'toscawidgets.prefix': '/toscawidgets',
>>> 'wsgi.run_once': False, 'wsgi.errors': <open file '<stderr>', mode 'w'
>>> at 0x7fb8af831140>, 'wsgi.multiprocess': False, 'CONTENT_TYPE': '',
>>> 'paste.httpserver.thread_pool': <paste.httpserver.ThreadPool object at
>>> 0x136f110>}, 'action': u'routes_placeholder'}
>>> 09:58:10,052 INFO  [tg.i18n] Set request language to []
>>> 09:58:10,052 INFO  [tg.i18n] Language []: not supported by FormEncode
>>> 09:58:10,053 DEBUG [tg.controllers] No controller-wide authorization
>>> at /notify/newSample
>>> 09:58:10,053 DEBUG [pylons.controllers.core] Merging pylons.response
>>> headers into start_response call, status: 404 Not Found
>>> 09:58:10,054 DEBUG [txn.140430996646160] commit
>>> 09:58:10,054 DEBUG [txn.140430996646160] new transaction
>>> 09:58:10,054 DEBUG [routes.middleware] Matched GET /error/document
>>> 09:58:10,054 DEBUG [routes.middleware] Route path: '*url', defaults:
>>> {'action': u'routes_placeholder', 'controller': u'root'}
>>> 09:58:10,054 DEBUG [routes.middleware] Match dict: {'url': u'/error/
>>> document', 'action': u'routes_placeholder', 'controller': u'root'}
>>> 09:58:10,055 DEBUG [pylons.wsgiapp] Setting up Pylons stacked object
>>> globals
>>> 09:58:10,055 DEBUG [pylons.wsgiapp] Resolved URL to controller:
>>> u'root'
>>> 09:58:10,055 DEBUG [pylons.wsgiapp] Controller appears to be a class,
>>> instantiating
>>> 09:58:10,055 DEBUG [pylons.wsgiapp] Calling controller class with WSGI
>>> interface
>>> 09:58:10,055 DEBUG [pylons.controllers.core] Calling '__before__'
>>> method with keyword args: **{'pylons': <pylons.util.PylonsContext
>>> object at 0x321b310>, 'url': u'/error/document', 'start_response':
>>> <function repl_start_response at 0x3216e60>, 'controller': u'root',
>>> 'environ': {'wsgi.multiprocess': False, 'pylons.original_response':
>>> <Response at 0x320e310 404 Not Found>, 'beaker.cache':
>>> <beaker.cache.CacheManager object at 0x3209b10>,
>>> 'toscawidgets.javascript.require_once': False, 'pylons.routes_dict':
>>> {'url': u'/error/document', 'action': u'routes_placeholder',
>>> 'controller': u'root'}, 'SERVER_PROTOCOL': 'HTTP/1.0', 'SCRIPT_NAME':
>>> '', 'pylons.original_request': <Request at 0x320e390 GEThttp://
>>> 127.0.0.1:50008/notify/newSample?inj=fluorine&uj=756>,
>>> 'webob.adhoc_attrs': {'response_type': None, 'language': 'en-us',
>>> 'response_ext': None}, 'REQUEST_METHOD': 'GET', 'PATH_INFO': '/error/
>>> document', 'repoze.tm.active': True, 'beaker.get_session': <bound
>>> method SessionMiddleware._get_session of
>>> <beaker.middleware.SessionMiddleware object at 0x3209a90>>,
>>> 'QUERY_STRING': 'inj=fluorine&uj=756', 'paste.throw_errors': True,
>>> 'CONTENT_LENGTH': '0', 'HTTP_USER_AGENT': 'Python-urllib/1.17',
>>> 'SERVER_NAME': '0.0.0.0', 'routes.route': <routes.route.Route object
>>> at 0x3209850>, 'pylons.environ_config': {'session': 'beaker.session',
>>> 'cache': 'beaker.cache'}, 'pylons.pylons': <pylons.util.PylonsContext
>>> object at 0x321b310>, 'wsgi.url_scheme': 'http',
>>> 'wsgiorg.routing_args': (<routes.util.URLGenerator object at
>>> 0x321b210>, {'url': u'/error/document', 'action':
>>> u'routes_placeholder', 'controller': u'root'}), 'SERVER_PORT':
>>> '50008', 'toscawidgets.framework': <tw.mods.base.HostFramework object
>>> at 0x3209b90>, 'pylons.controller':
>>> <portalservice.controllers.root.RootController object at 0x321b450>,
>>> 'wsgi.input': <socket._fileobject object at 0x320c758 length=0>,
>>> 'HTTP_HOST': '127.0.0.1:50008', 'beaker.session': {'_id':
>>> 'e182b6500d77717b340a7384fae37c33'}, 'wsgi.multithread': True,
>>> 'routes.url': <routes.util.URLGenerator object at 0x321b210>,
>>> 'wsgi.version': (1, 0), 'paste.registry': <paste.registry.Registry
>>> object at 0x320e210>, 'toscawidgets.prefix': '/toscawidgets',
>>> 'wsgi.run_once': False, 'wsgi.errors': <open file '<stderr>', mode 'w'
>>> at 0x7fb8af831140>, 'REMOTE_ADDR': '127.0.0.1', 'CONTENT_TYPE': '',
>>> 'paste.httpserver.thread_pool': <paste.httpserver.ThreadPool object at
>>> 0x136f110>}, 'action': u'routes_placeholder'}
>>> 09:58:10,056 INFO  [tg.i18n] Set request language to []
>>> 09:58:10,056 INFO  [tg.i18n] Language []: not supported by FormEncode
>>> 09:58:10,056 DEBUG [tg.controllers] No controller-wide authorization
>>> at /error/document
>>> 09:58:10,057 DEBUG [pylons.controllers.core] Merging pylons.response
>>> headers into start_response call, status: 404 Not Found
>>> 09:58:10,057 DEBUG [txn.140430996646160] commit
>>> ^C09:58:10,751 INFO  [paste.httpserver.ThreadPool] Shutting down
>>> threadpool
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "TurboGears" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<turbogears%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/turbogears?hl=en.
>>
>>
> --
> You received this message because you are subscribed to the Google Groups
> "TurboGears" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<turbogears%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/turbogears?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" 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/turbogears?hl=en.

Reply via email to