Fresh Rails 4.2设置.我想抑制长错误回溯.在下面的回溯日志中,第一行对我来说已经足够了,接下来的4行可以删除
ActionController::RoutingError (No route matches [GET] "/user"):
actionpack (4.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
web-console (2.1.2) lib/web_console/middleware.rb:37:in `call'
actionpack (4.2.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.2.1) lib/rails/rack/logger.rb:38:in `call_app'
Run Code Online (Sandbox Code Playgroud)
我添加了一个新的消音器 backtrace_silencers.rb
# config/initializers/backtrace_silencers.rb
Rails.backtrace_cleaner.add_silencer { |line| line =~ /lib/ }
Run Code Online (Sandbox Code Playgroud)
服务器重启后 - 没有任何反应,我仍然得到相同的回溯日志.(/lib/应该删除每一行匹配:http://api.rubyonrails.org/classes/ActiveSupport/BacktraceCleaner.htm)
完整性检查:
> line = "actionpack (4.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'"
=> "actionpack (4.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'"
> line =~ /lib/
=> 19
Run Code Online (Sandbox Code Playgroud)
但过滤器工作:
# config/initializers/backtrace_silencers.rb
Rails.backtrace_cleaner.add_filter { |line| line.gsub('lib', 'yeah!') }
Run Code Online (Sandbox Code Playgroud)
现在回溯看起来像这样:
ActionController::RoutingError (No route matches [GET] "/user"): …Run Code Online (Sandbox Code Playgroud)