libs/web: more verbose faults

This commit is contained in:
Jo-Philipp Wich 2011-07-21 01:04:53 +00:00
parent d970d7bd27
commit 2e618aaf29
2 changed files with 26 additions and 8 deletions

View file

@ -385,11 +385,16 @@ function dispatch(request)
setfenv(target, env)
end)
local ok, err
if type(c.target) == "table" then
target(c.target, unpack(args))
ok, err = util.copcall(target, c.target, unpack(args))
else
target(unpack(args))
ok, err = util.copcall(target, unpack(args))
end
assert(ok,
"Failed to execute " .. (type(c.target) == "function" and "function" or c.target.type or "unknown") ..
" dispatcher target for entry '/" .. table.concat(request, "/") .. "'.\n" ..
"The called action terminated with an exception:\n" .. tostring(err or "(unknown)"))
else
local root = node()
if not root or not root.target then
@ -397,7 +402,7 @@ function dispatch(request)
"Install luci-admin-full and retry. " ..
"If the module is already installed, try removing the /tmp/luci-indexcache file.")
else
error404("No page is registered at '" .. table.concat(request, "/") .. "/'.\n" ..
error404("No page is registered at '/" .. table.concat(request, "/") .. "'.\n" ..
"If this url belongs to an extension, make sure it is properly installed.\n" ..
"If the extension was recently installed, try removing the /tmp/luci-indexcache file.")
end
@ -477,11 +482,20 @@ function createindex_plain(path, suffixes)
end
local mod = require(modname)
assert(mod ~= true,
"Invalid controller file found\n" ..
"The file '" .. c .. "' contains an invalid module line.\n" ..
"Please verify whether the module name is set to '" .. modname ..
"' - It must correspond to the file path!")
local idx = mod.index
assert(type(idx) == "function",
"Invalid controller file found\n" ..
"The file '" .. c .. "' contains no index() function.\n" ..
"Please make sure that the controller contains a valid " ..
"index function and verify the spelling!")
if type(idx) == "function" then
index[modname] = idx
end
index[modname] = idx
end
if indexcache then

View file

@ -78,7 +78,10 @@ function Template.__init__(self, name)
-- If we have no valid template throw error, otherwise cache the template
if not self.template then
error(err)
error("Failed to load template '" .. name .. "'.\n" ..
"Error while parsing template '" .. sourcefile .. "'.\n" ..
"A syntax error occured near '" ..
(err or "(nil)"):gsub("\t", "\\t"):gsub("\n", "\\n") .. "'.")
else
self.cache[name] = self.template
end
@ -99,6 +102,7 @@ function Template.render(self, scope)
-- Now finally render the thing
local stat, err = util.copcall(self.template)
if not stat then
error("Error in template %s: %s" % {self.name, err})
error("Failed to execute template '" .. self.name .. "'.\n" ..
"A runtime error occured: " .. tostring(err or "(nil)"))
end
end