当我想尝试或调试smthing时,我运行rails console
并在那里做一些事情。我可以通过raise "blablabla"
引发异常来打印代码中的一些文本或变量。
问题:如何在没有异常引发的情况下写入 rails console (并且明显破坏代码执行),就像一个简单的logger.info "blah"
一样?
答案 0 :(得分:75)
正如其他人所说,您想要使用puts
或p
。为什么?那是魔术吗?
其实没有。导轨控制台在引擎盖下是IRB,因此您可以在IRB中执行所有操作,您可以在导轨控制台中执行此操作。由于我们使用puts
在IRB中进行打印,因此我们使用相同的命令在rails控制台中进行打印。
您实际上可以查看rails源代码中的控制台code。看到irb的要求? :)
答案 1 :(得分:33)
p "asd" # => "asd"
puts "asd" # => asd
此处有关于此的更多信息:http://www.ruby-doc.org/core-1.9.3/ARGF.html
答案 2 :(得分:8)
除了已经建议的p
和puts
之外,实际上在大多数情况下,您可以按照自己的建议编写logger.info "blah"
。它也适用于控制台,不仅仅是在服务器模式下。
但是,如果你想要的只是控制台调试,那么puts
和p
的写入要短得多。
答案 3 :(得分:1)
我认为您应该使用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