Exception: ActiveSupport::SyntaxErrorProxy
Do not use. This class is for internal use only.
Relationships & Source Files | |
Namespace Children | |
Classes:
| |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
SyntaxError
|
|
Instance Chain:
self,
SyntaxError
|
|
Inherits: |
SyntaxError
|
Defined in: | activesupport/lib/active_support/syntax_error_proxy.rb |
Overview
This is a class for wrapping syntax errors. The purpose of this class is to enhance the backtraces on SyntaxError exceptions to include the source location of the syntax error. That way we can display the error source on error pages in development.
Instance Method Summary
Instance Method Details
#backtrace
[ GitHub ]# File 'activesupport/lib/active_support/syntax_error_proxy.rb', line 11
def backtrace + super end
#backtrace_locations
[ GitHub ]# File 'activesupport/lib/active_support/syntax_error_proxy.rb', line 34
def backtrace_locations return nil if super.nil? .map { |trace| file, line = trace.match(/^(.?):(\d).*$/, &:captures) || trace BacktraceLocation.new(file, line.to_i, trace) # We have to wrap these backtrace locations because we need the # spot information to come from the originating exception, not the # proxy object that's generating these } + super.map { |loc| BacktraceLocationProxy.new(loc, self) } end
#parse_message_for_trace (private)
[ GitHub ]# File 'activesupport/lib/active_support/syntax_error_proxy.rb', line 47
def if __getobj__.to_s.start_with?("(eval") # If the exception is coming from a call to eval, we need to keep # the path of the file in which eval was called to ensure we can # return the right source fragment to show the location of the # error location = __getobj__.backtrace_locations[0] ["#{location.path}:#{location.lineno}: #{__getobj__}"] else __getobj__.to_s.split("\n") end end