Ruby Dup / клон рекурсивно

У меня есть хеш, как:

h = {'name' => 'sayuj', 
     'age' => 22, 
     'project' => {'project_name' => 'abc', 
                   'duration' => 'prq'}}

Мне нужен дубликат этого хеша, изменение не должно влиять на исходный хеш.

Когда я пытаюсь,

d = h.dup # or d = h.clone
d['name'] = 'sayuj1'
d['project']['duration'] = 'xyz'

p d #=> {"name"=>"sayuj1", "project"=>{"duration"=>"xyz", "project_name"=>"abc"}, "age"=>22}
p h #=> {"name"=>"sayuj", "project"=>{"duration"=>"xyz", "project_name"=>"abc"}, "age"=>22}

Здесь вы можете увидетьproject['duration'] изменяется в оригинальном хеше, потому чтоproject это еще один хэш-объект.

Я хочу чтобы хеш былduped или жеcloned рекурсивно. Как мне этого добиться?

Ответы на вопрос(5)

Ваш ответ на вопрос