我想在开发模式下调用 erb 模板时打印出一些调试消息,但在生产模式下调用时则不打印(即)
<%= debug variable_name %>
但是,这将以任何模式打印。
我发现我能做到
<% if logger.debug?
debug variable_name
end %>
这似乎有效。这是正确的方法,还是有更优雅的解决方案?
我想在开发模式下调用 erb 模板时打印出一些调试消息,但在生产模式下调用时则不打印(即)
<%= debug variable_name %>
但是,这将以任何模式打印。
我发现我能做到
<% if logger.debug?
debug variable_name
end %>
这似乎有效。这是正确的方法,还是有更优雅的解决方案?
你可能想做这样的事情:
<%= debug(variable) if RAILS_ENV == 'development' %>
如果您经常这样做,您可能需要创建一个快速帮助方法来进一步清理代码:
def my_debug(debug_variable)
debug_variable if RAILS_ENV == 'development'
end
然后您可以在您的 erb 模板/视图中执行此操作
my_debug(variable_here)
我会四处寻找更好的方法,但现在这可能是一个单线:
<%= debug(variable) if logger.debug? %>
编辑:如果您要在任何地方都有这种类型的代码,那么帮助者可能会成功。
def fancy_debuggin(f)
debug(f) if logger.debug?
end
<%= fancy_debuggin(variable) %>
你不需要调用logger.debug?测试日志记录是否打开的函数,您可以直接调用 logger.debug。
这种方法对性能有一定影响,通常是非常微不足道的,因为即使记录器不在调试级别,您也必须评估传递给 logger.debug 方法的字符串。这只是一个问题,你有一个相对昂贵的字符串。
所以你的代码看起来像这样
<%= logger.debug(variable) %>