Bla*_*lor 6 logging routing production routes ruby-on-rails
我试图从生产rails应用程序中删除"catch all"或"default"路由.我有兴趣在收集其使用日志的同时维护操作,以便我可以用适当的硬编码路由替换它.
所以,鉴于我的文件中有以下默认路由行config/routes.rb.
match '/:controller(/:action(/:id))'
Run Code Online (Sandbox Code Playgroud)
我怎样才能创建或检索每次路由被击中的日志.理想情况下,此日志仅包括此路由实际处理的请求以及参数,并且需要使路由本身正常运行.
另一种可能性是使用Rails路由器constraints选项:
match '/:controller(/:action(/:id))', constraints: -> (req) {
Rails.logger.info("Default route used: #{req.path.inspect}")
true
}
Run Code Online (Sandbox Code Playgroud)
注意:lambda返回true,以便匹配成功.
您可以这样做的一种方法是将默认路由更改为:
match ':controller(/:action(/:id))(.:format)', :using_default_route => true
Run Code Online (Sandbox Code Playgroud)
然后将以下功能放入 app/controllers/application_controller.rb
before_filter do
if params[:using_default_route]
logger.info("Default route for #{request.path.inspect}. params = #{params.inspect}")
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |