1

我想在开发模式下调用 erb 模板时打印出一些调试消息,但在生产模式下调用时则不打印(即)

<%= debug variable_name %>

但是,这将以任何模式打印。

我发现我能做到

<% if logger.debug?
     debug variable_name
   end %>

这似乎有效。这是正确的方法,还是有更优雅的解决方案?

4

3 回答 3

3

你可能想做这样的事情:

<%= debug(variable) if RAILS_ENV == 'development' %>

如果您经常这样做,您可能需要创建一个快速帮助方法来进一步清理代码:

def my_debug(debug_variable)
debug_variable if RAILS_ENV == 'development'
end

然后您可以在您的 erb 模板/视图中执行此操作

my_debug(variable_here)
于 2009-09-04T07:15:38.487 回答
1

我会四处寻找更好的方法,但现在这可能是一个单线:

<%= debug(variable) if logger.debug? %>

编辑:如果您要在任何地方都有这种类型的代码,那么帮助者可能会成功。

def fancy_debuggin(f)
  debug(f) if logger.debug?
end

<%= fancy_debuggin(variable) %>
于 2009-09-04T01:38:04.567 回答
1

你不需要调用logger.debug?测试日志记录是否打开的函数,您可以直接调用 logger.debug。

这种方法对性能有一定影响,通常是非常微不足道的,因为即使记录器不在调试级别,您也必须评估传递给 logger.debug 方法的字符串。这只是一个问题,你有一个相对昂贵的字符串。

所以你的代码看起来像这样

<%= logger.debug(variable) %>
于 2009-09-04T04:15:11.427 回答