Mic*_*ich 5 ruby rack ruby-on-rails
我需要一些建议。我正在开发我的第一个Rack中间件。但是,当从一个控制器引发一个异常时,我没有得到完整的异常回溯,因为我的中间件显然是最后一个可以使用的中间件:
NoMethodError (undefined method `accessible?' for "zFhY3ksiR4UdtGH3ZHs3":String):
app/middleware/content_negotiation.rb:28:in `_call'
app/middleware/content_negotiation.rb:20:in `call'
Run Code Online (Sandbox Code Playgroud)
而不是真正的回溯,即类似这样的东西:
[ 0] "/.../lib/doorkeeper/doorkeeper_for.rb:17:in `validate_token'",
[ 1] "/.../lib/doorkeeper/helpers/filter.rb:9:in `block in doorkeeper_for'",
Run Code Online (Sandbox Code Playgroud)
自定义中间件的第20行对应于:
def call(env)
dup._call(env)
end
Run Code Online (Sandbox Code Playgroud)
第28行对应于_call:
status, headers, response = @app.call(env)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,使自定义中间件透明/无阻塞的最佳实践是什么?我应该从该中间件中解救出来并显示异常/回溯吗?
谢谢。
您可以使用 Rail 的回溯清理器
http://api.rubyonrails.org/classes/ActiveSupport/BacktraceCleaner.html
在下面config/initializers/backtrace_silencers.rb
您可以添加以下行来消除自定义中间件错误
Rails.backtrace_cleaner.add_silencer { |line| line =~ /app\/middleware/ }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |