In admin/default, we have:
def compile_app():
c = app_compile(request.args[0], request)
if c:
session.flash = T('application compiled')
else:
import traceback
tb = traceback.format_exc()
session.flash = DIV(T('Cannot compile: there are errors in your
app:',CODE(tb)))
redirect(URL(r=request, f='site'))
It's calling this from gluon/admin:
def app_compile(app, request):
"""
Compiles the application
Parameters
----------
app:
application name
request:
the global request object
"""
from compileapp import compile_application, remove_compiled_application
folder = apath(app, request)
try:
compile_application(folder)
return True
except (Exception, RestrictedError):
remove_compiled_application(folder)
return False
However, CODE(tb) appears to be always empty. I believe that's because
traceback.format_exc() expects to find a traceback buffer on the stack, but
since app_compile() has returned after catching the exception, the exception
isn't on the stack any more. I think it's necessary for app_compile to return
the traceback to the caller.
--
Subscription settings: http://groups.google.com/group/web2py/subscribe?hl=en