# railties/lib/rails/backtrace_cleaner.rb
module Rails
class BacktraceCleaner < ActiveSupport::BacktraceCleaner
# ...
end
end
# railties/lib/rails.rb
def backtrace_cleaner
@backtrace_cleaner ||= begin
require 'rails/backtrace_cleaner'
Rails::BacktraceCleaner.new
end
end
# railties/lib/application.rb
def env_config
# ...
"action_dispatch.backtrace_cleaner" => Rails.backtrace_cleaner
# ...
end
调用:
# action_dispatch/middleware/exception_wrapper.rb
def backtrace_cleaner
@backtrace_cleaner ||= @env['action_dispatch.backtrace_cleaner']
end
def clean_backtrace(*args)
if backtrace_cleaner
backtrace_cleaner.clean(backtrace, *args)
else
backtrace
end
end