我有一个对象,我想要转储所有信息。
出于调试目的,我可以将其转换为json或其他合适的格式吗?
我知道使用p对象,有时可以打印出所有信息;但不总是。所以我在问p对象变得无效时还有其他方法
答案 0 :(得分:2)
尝试pry
非常适合探索物体。特别是大型对象,因为它有分页。对象也采用颜色编码,使其更具可读性。
步骤:
答案 1 :(得分:1)
你可以通过几种方式去。使用标准库中的json是将对象转换为json的一种方法。
这会将ruby中的对象转换为json字符串:
require "json"
h = Hash.new(name: "example")
JSON.dump(h)
但你似乎想要详细检查一个物体。最好的解决方案可能是" Pry"如果你真的需要很多细节,其他人建议的宝石。 所以安装撬后你可以" cd"进入对象并检查实例变量public / private方法和方法/类的源代码等,这真是太棒了。
require "pry"
cd SomeObject
ls # this shows you everything defined in the object.
其他人建议的object.inspect的问题是它可以被覆盖,通常是,因此不会向您显示足够的信息。所以这取决于你想要找到什么。
puts o.instance_variables #=> shows all an objects instance variable names
puts o.instance_variable_get :@some_var #=> returns the value held by @some_var
puts o.methods - Object.methods #=> roughly speaking, shows you the methods defined on an object itself and not inheritted from parent objects
不幸的是,这里不是一个完美的答案,但出于调试目的,我个人认为没有什么比pry调试器插件宝石(忘记实际名称)更容易撬开,它允许您逐步调试调用堆栈。
答案 2 :(得分:0)
你可以使用“inspect”:“返回一个包含obj的人类可读表示的字符串。默认情况下,显示类名和实例变量列表及其值(通过对每个变量调用inspect)。 “
示例:
puts object.inspect
答案 3 :(得分:0)
您可以尝试puts my_object.as_json.to_json