我想在开发模式下调用erb模板中的一些调试消息,但是在生产模式下调用它时(即。)
<%= debug variable_name %>
但是,这将以任何模式打印。
我发现我可以做到
<% if logger.debug?
debug variable_name
end %>
似乎有用。这是正确的方法,还是有更优雅的解决方案?
答案 0 :(得分:3)
你可能想做这样的事情:
<%= debug(variable) if RAILS_ENV == 'development' %>
如果你经常这样做,你可能想要创建一个快速帮助方法来清理代码:
def my_debug(debug_variable)
debug_variable if RAILS_ENV == 'development'
end
然后您可以在erb模板/视图中执行此操作
my_debug(variable_here)
答案 1 :(得分:1)
我会四处寻找更好的方法,但现在可能只是一个班轮:
<%= debug(variable) if logger.debug? %>
编辑:如果您打算在任何地方使用此类型的代码,也许帮助程序可以解决问题。
def fancy_debuggin(f)
debug(f) if logger.debug?
end
<%= fancy_debuggin(variable) %>
答案 2 :(得分:1)
您不需要调用logger.debug吗?用于测试是否打开日志记录的功能,您可以直接调用logger.debug。
使用此方法会导致性能下降,通常非常有限,因为即使记录器未处于调试级别,您也必须评估传递给logger.debug方法的字符串。这只是一个问题,你有一个相对昂贵的字符串。
所以你的代码看起来像这样
<%= logger.debug(variable) %>