红宝石-写入rails利弊

当我想尝试或调试东西时,我运行rails console并在那里做一些事情。 我可以通过在raise "blablabla"中引发异常来从代码中打印一些文本或变量。问题:我如何能像简单的logger.info "blah"那样,不加任何例外(明显地破坏代码执行)而向Rails控制台写入内容?

4个解决方案
77 votes

正如其他人所说,您要使用code或p。为什么? 那是魔术吗?

其实并不是。 Rails控制台在内部是一个IRB,因此您可以在IRB中完成的所有操作都可以在Rails控制台中进行。 由于在IRB中进行打印,我们使用code,因此在rails控制台中使用相同的命令进行打印。

您实际上可以在rails源代码中查看控制台代码。 看到irb的要求了吗? :)

Nobita answered 2020-01-12T18:50:46Z
36 votes

pp是一个很好的开始。

p "asd"       # => "asd"
puts "asd"    # => asd

这是有关此的更多信息:[http://www.ruby-doc.org/core-1.9.3/ARGF.html]

SeriousM answered 2020-01-12T18:51:10Z
8 votes

除了已经建议的pputs之外-实际上,在大多数情况下,您确实可以像建议自己一样编写p。 它也可以在控制台中工作,不仅可以在服务器模式下工作。

但是,如果您只需要控制台调试,则无论如何写,putsp要短得多。

NIA answered 2020-01-12T18:51:35Z
1 votes

我认为您应该使用Rails调试选项:

logger.debug "Person attributes hash: #{@person.attributes.inspect}"
logger.info "Processing the request..."
logger.fatal "Terminating application, raised unrecoverable error!!!"

[https://guides.rubyonrails.org/debugging_rails_applications.html]

matiasmasca answered 2020-01-12T18:51:59Z
translate from https://stackoverflow.com:/questions/14961691/write-to-rails-console