我想在开发模式下调用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) %>