Ruby on rails 3.2 如何防止Rails在生产中记录操作视图

Ruby on rails 3.2 如何防止Rails在生产中记录操作视图,ruby-on-rails-3.2,actionview,Ruby On Rails 3.2,Actionview,在rails 3.2.0中,是否可以关闭rails日志以在中渲染视图 ActionView::生产环境中的LogSubscriber 目前,我发现Suppress的唯一方法是使用猴子补丁,并通过下面的方式增加日志级别以进行调试。是否有更好的方法来执行此操作或任何配置 模块操作视图 类日志订阅者 def render_模板(事件) message=“呈现的#{from_rails_root(event.payload[:identifier])” messageActionView使用和来检测其事

在rails 3.2.0中,是否可以关闭rails日志以在中渲染视图 ActionView::生产环境中的LogSubscriber

目前,我发现Suppress的唯一方法是使用猴子补丁,并通过下面的方式增加日志级别以进行调试。是否有更好的方法来执行此操作或任何配置

模块操作视图
类日志订阅者
def render_模板(事件)
message=“呈现的#{from_rails_root(event.payload[:identifier])”
messageActionView使用和来检测其事件,从日志中将其静音非常简单,只需在环境文件中包含以下内容:

%w{render_template render_partial render_collection}。每个do|事件|
ActiveSupport::Notifications.unsubscribe“#{event}.action_view”
结束

干杯

您可以直接关闭操作视图记录器

Rails.application.configure do
config.action\u view.logger=nil
结束

有趣!关闭后,您将如何做相反的操作?更改<代码>取消订阅< /代码>到<代码>订阅不工作,这需要在Rails 5中进行调整:将其封装为<代码> ActudiePupp::OnthLoad:ActhOnVIEW做< /代码>以确保ActoVIEW已注册后运行。@ TigaGoJijw考虑更新您的答案,并入上面关于Rails 5的注释。在Rails 6.0.3.4中似乎对我很有用。当被接受的答案被接受时,这可能不可用?这种方式似乎比公认的答案更简单,不确定这样做是否有任何缺点,或者它禁用的内容是否与公认答案中的内容不完全相同。@jrochkind它在Rails 6.0.3.4中仍然有效。代码应该放在初始值设定项中,例如
config/initializers/action\u view.rb
.yes。我只是把它放在
config/application.rb
config/environments/production.rb
中。在这两个地方都工作得很好。不幸的是,这最终在我的应用程序中导致了类似于nil:NilClass
NoMethodError:undefined方法
debug'的错误,因为一些第三方代码试图调用
logger.debug
,并得到我们设置为
logger
。Rails在这里的期望非常混乱。我可以尝试使用第三方而不是
nil
。虽然Rails指南建议设置为
nil
,但这可能解释了为什么一些人更喜欢接受答案中更复杂的解决方案。