在Ruby-on-Rails中,如何记录对象及其状态(处于开发模式),以便我可以将其用于测试目的?例如请求对象,但更笼统地说,是任何复杂的对象,无论我是否拥有类定义。
答案 0 :(得分:2)
一种选择是使用Marshal
,它是本机内置在ruby中的(即,不是特定于Rails的)。您可以使用Marshal
通过serialized_obj = Marshal.dump(my_object)
将对象序列化为字符串。您可以将这些字符串存储在文件中,然后通过my_obj = Marshal.load(serialized_obj)
在测试套件中反序列化它们。这是Mehdi Farsi https://blog.appsignal.com/2019/03/26/object-marshalling-in-ruby.html的出色文章中的一个例子。
hello_world = 'hello world!'
serialized_string = Marshal.dump(hello_world) # => "\x04\bI\"\x11hello world!\x06:\x06ET"
serialized_string.class # => String
deserialized_hello_world = Marshal.load(serialized_string) # => "hello world!"
hello_world.object_id # => 70204420126020
deserialized_hello_world.object_id # => 70204419825700