Я использую трубы в рубине, и я не могу отправить сериализованный объект через трубу. Я встречаю «NoMethodError», который является более странным, потому что я отправляю структуру. Я попытался добавить функцию, но когда я вызываю функцию, я получаю ту же ошибку. Что вызывает это и каково решение?Сериализация объектов, отправленных по трубе «NoMethodError»
Источник:
reader, writer = IO.pipe
#define the pair object
Pair = Struct.new(:x, :y) do
end
#creates, serializes and sends an object
fork do
temp = Pair.new(1, 2)
temp_str = Marshal.dump(temp)
writer.puts temp_str
end
#prints it's contents
fork do
obj = reader.gets
puts obj.x
puts obj.y
end
Примечание: Я взял основную идею о том, как все должно выглядеть со второго ответа в этой теме: Marshal (Ruby) pipes: sending serialized object to child processes
Если вы намеренно ставите ': ty' в свою структуру, кажется очевидным, что вызов' # y' не будет выполнен, уточните. – Patru
Я не опечатка. Теперь он отредактирован. – Bloodcount