class Lux::Error
default error handler for lux e = Lux::Error.new
404 e.code => 404 e.message => 'Not Found'
e = Lux::Error.not_found('foo') e.code => 404 e.message => foo
Attributes
message[RW]
Public Class Methods
inline(name, error=nil)
click to toggle source
render error inline or break in production
# File lib/lux/error/error.rb, line 114 def inline name, error=nil error ||= $! unless Lux.config(:dump_errors) key = log error render "Lux inline error: %s\n\nkey: %s" % [error.message, key] end name ||= 'Undefined name' msg = error.message.to_s.gsub('","',%[",\n "]).gsub('<','<') dmp = split_backtrace error dmp[0] = dmp[0].map { |_| _ = _.split(':', 3); '<b>%s</b> - %s - %s' % _ } log error <<~TEXT <pre style="color:red; background:#eee; padding:10px; font-family:'Lucida Console'; line-height:15pt; font-size:11pt;"> <b style="font-size:110%;">#{name}</b> <b>#{error}: #{msg}</b> #{dmp[0].join("\n")} #{dmp[1].join("\n")} </pre> TEXT end
log(error)
click to toggle source
# File lib/lux/error/error.rb, line 150 def log error Lux.config.error_logger.call error end
new(code_num, message=nil)
click to toggle source
# File lib/lux/error/error.rb, line 173 def initialize code_num, message=nil self.code = code_num @message = message || CODE_LIST[code_num][:name] end
render(text, status=500)
click to toggle source
template to show full error page
# File lib/lux/error/error.rb, line 107 def render text, status=500 Lux.current.response.status status Lux.current.response.body Lux.config.server_error_template.call(text) throw :done end
report(code, msg=nil)
click to toggle source
# File lib/lux/error/error.rb, line 144 def report code, msg=nil e = Integer === code ? Lux::Error.new(code) : Lux::Error.send(code) e.message = msg if msg raise e end
split_backtrace(error)
click to toggle source
# File lib/lux/error/error.rb, line 154 def split_backtrace error # split app log rest of the log dmp = [[], []] root = Lux.root.to_s error.backtrace.each do |line| line = line.sub(root, '.') dmp[line[0,1] == '.' ? 0 : 1].push line end dmp end
Public Instance Methods
code()
click to toggle source
# File lib/lux/error/error.rb, line 178 def code # 400 is a default @code || 400 end
code=(num)
click to toggle source
# File lib/lux/error/error.rb, line 183 def code= num @code = num.to_i raise 'Status code %s not found' % @code unless CODE_LIST[@code] end
render()
click to toggle source
# File lib/lux/error/error.rb, line 189 def render self.class.render message, code end