英文:
Show Rails debugging errors (detailed_exceptions) if the request user is an admin?
问题
特别是对于较小的项目,与其在生产环境中得到更多的反馈,不如:
我看到有一个名为 Rails.configuration.consider_all_requests_local
的变量。
我想知道是否可以使用这个变量来允许 admin
级别的用户在生产环境中看到完整的调试信息,当 production.rb 配置通常设置为:
# 禁用完整的错误报告并启用缓存。
config.consider_all_requests_local = false
我尝试了几种在应用程序控制器中设置 consider_all_requests_local = true
的函数变体,但并没有影响到错误是否实际显示。
英文:
Especially for smaller projects, it's nice to get more feedback in production than:
I saw there's a variable called Rails.configuration.consider_all_requests_local
.
I'm wondering if this could be used to allow admin
level users to see the full debugging in production, when the production.rb configuration usually sets:
# Full error reports are disabled and caching is turned on.
config.consider_all_requests_local = false
I've tried several variations of functions setting consider_all_requests_local = true
inside of the application controller, but it's not impacting errors actually being displayed or not.
答案1
得分: 0
根据 https://guides.rubyonrails.org/configuring.html#config-consider-all-requests-local,有一个名为 show_detailed_exceptions?
的函数,旨在在控制器中进行覆盖以指定哪些请求应在错误时提供调试信息。
因此,在 app/controllers/application_controller.rb
中,我只是添加了 show_details_exceptions?
函数:
class ApplicationController < ActionController::Base
def show_detailed_exceptions?
request.session[:user_id].present? && User.find(request.session[:user_id]).is_admin?
end
end
两个Firefox窗口并排显示
Rails在localhost
上运行,但RAILS_ENV=production
。
左窗口 | 右窗口 |
---|---|
普通非管理员用户 | 以admin 用户身份登录 |
典型的生产风格异常 | 开发风格异常 |
“出现问题了” | 故障排除更快 |
默认的“Firefox容器” | 单独的 Firefox容器 |
英文:
According to https://guides.rubyonrails.org/configuring.html#config-consider-all-requests-local there's a function called show_detailed_exceptions?
that's designed to be overridden in controllers to specify which requests should provide debugging information on errors.
So in app/controllers/application_controller.rb
I just added the show_details_exceptions?
function:
class ApplicationController < ActionController::Base
def show_detailed_exceptions?
request.session[:user_id].present? && User.find(request.session[:user_id]).is_admin?
end
end
Two firefox windows side by side
Rails running on localhost
, but RAILS_ENV=production
.
Left Window | Right Window |
---|---|
Normal, non admin user | logged in as admin user |
Typical production style exception | Development style exception |
"something went wrong" | Much faster to troubleshoot |
Default "firefox container" | separate firefox container |
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论