此时我不是100%肯定,但我相信我得到的异常会导致请求的状态以401响应。
我已经删除了控制器中的所有代码,问题仍然存在,并且似乎正在捕获异常,以便返回401状态,因此没有堆栈跟踪。
我已经创建了一个自定义中间件来尝试和调试,但我仍然无法找到问题的根源。
如何找出问题发生的位置?
我们正在使用heroku,所以pry似乎不起作用,也没有命令行访问正在运行的服务器。我无法在我的本地开发机器上复制该问题。
答案 0 :(得分:1)
我从未发现如何注入日志记录,但是一些hacky解决方法是创建一个额外的中间件,它可以在你想要的地方执行日志记录。
class Debugger
def initialize(app, *args)
@app = app
@args = args
end
def call(env)
Rails.logger.debug "executing app.call Debugger #{@args.first}"
status, headers, body = @app.call(env)
Rails.logger.debug "Status: #{status} after app.call Debugger #{@args.first}"
[status, headers, body]
end
end
然后在中间件堆栈中添加记录器,在Rails中这将进入config/application.rb
:
config.middleware.insert_before Rack::Sendfile, "Debugger", "1"
会导致Rails记录器添加
Executing app.call Debugger 1
然后执行Rack:Sendfile和日志:
Status: 400 after app.call Debugger 1
假设您正在使用rails,并且Rack :: Sendfile返回的状态代码返回了400状态代码。
注意,如果您不使用Rails,则需要修改记录器,以及如何配置中间件。
这不是一个理想的解决方案,可能有更好的方法,但在撰写本文时我没有更好的方法。
答案 1 :(得分:0)
一个替代方法是以下模块,该模块在每个中间件输入/返回处插入调试消息(每次返回后均打印状态代码) (改编自https://github.com/DataDog/dd-trace-rb/issues/368)
@font-face {
font-family: 'SpecialElite-Regular';
src: url( $font-path + '/SpecialElite-Regular/SpecialElite-Regular.ttf') format('ttf'),
url( $font-path + '/SpecialElite-Regular/SpecialElite-Regular.eot') format('eot'),
url( $font-path + '/SpecialElite-Regular/SpecialElite-Regular.svg') format('svg'),
url( $font-path + '/SpecialElite-Regular/SpecialElite-Regular.woff') format('woff'),
url( $font-path + '/SpecialElite-Regular/SpecialElite-Regular.woff2') format('woff2');
}