有没有办法转换Ruby的可读表示形式';s对象返回到此对象

有没有办法转换Ruby的可读表示形式';s对象返回到此对象,ruby,database,string,object,Ruby,Database,String,Object,试想一下,当我们知道的关于Ruby对象的唯一信息是它的可读格式时: #<User::Class::Element:0x2fef43 @field1 = 1, @field2 = two, @field3 = [1,2,3]> # 任务是编写一个方法,该方法可以将该表示转换为该表示所指向的类的对象(当然,可以访问所有适当的名称空间、模块、类和方法)。例如: obj = humanReadableFormat2Obj("#<User::Class::Element:0x2fef

试想一下,当我们知道的关于Ruby对象的唯一信息是它的可读格式时:

#<User::Class::Element:0x2fef43 @field1 = 1, @field2 = two, @field3 = [1,2,3]>
#
任务是编写一个方法,该方法可以将该表示转换为该表示所指向的类的对象(当然,可以访问所有适当的名称空间、模块、类和方法)。例如:

obj = humanReadableFormat2Obj("#<User::Class::Element:0x2fef43 @field1 = 1, @field2 = \"two\", @field3 = [1,2,3]>") 
puts obj.field1      #=> "1"
puts obj.field2      #=> "two"
p obj.field3         #=> [1, 2, 3]
puts obj.class.to_s  #=> User::Class::Element
obj=humanReadableFormat2Obj(“#”)
将obj.field1#=>“1”
将obj.field2#=>置于“两个”
p obj.field3#=>[1,2,3]
将obj.class.to_s#=>User::class::Element
另外,该任务源于几个大型数据库的同步问题。您不必以二进制格式(数百MB)将对象从一个数据库传输到另一个数据库,而只需传输一个脚本(几KB)并在另一个数据库上执行它即可创建适当的对象

和gems(分别是XML和JSON)可以序列化为相对可读的Ruby对象。这可能是一个更好的解决方案,因为
inspect
方法并不总是返回Ruby对象的所有属性,正如Sigurd在注释中提到的那样

Ox文档中的示例:

require 'ox'

class Sample
  attr_accessor :a, :b, :c

  def initialize(a, b, c)
    @a = a
    @b = b
    @c = c
  end
end

# Create Object
obj = Sample.new(1, "bee", ['x', :y, 7.0])
# Now dump the Object to an XML String.
xml = Ox.dump(obj)
# Convert the object back into a Sample Object.
obj2 = Ox.parse_obj(xml)

为什么不使用更合适的媒介(JSON、protobuf、msgpack等)?还有,几KBs的脚本值数百MB的二进制数据?二进制数据是高度冗余的吗?或者在转换为脚本形式或从脚本形式转换为脚本形式时是否存在大量数据丢失?这些数据库非常大,距离我很远。我还没有完全访问它们,我可以从表中获取数据并将其放入我自己的数据库中。无法将检查文本转换为实际对象。问题是inspect可能不会显示对象包含的所有信息。如果您真的想使用现成的类来传输它,请查看