Существует встроенная реализация для выполнения глубоких клонов объектов ruby: ruby_deep_clone
Установите его с помощью gem:
gem install ruby_deep_clone
Пример использования:
require "deep_clone"
object = SomeComplexClass.new()
cloned_object = DeepClone.clone(object)
Это примерно в 6-7 раз быстрее, чем подход Маршала, и событие работает с замороженными объектами.
Обратите внимание, что этот проект больше не поддерживается (последний коммит в 2017 , есть сообщения проблемы )