Look the below code with Object#clone:
foo = Object.new
def foo.bar
"hi"
end
baz = foo.clone
foo.bar # => "hi"
baz.bar # => "hi"
Now with Object#dup
foo = Object.new
def foo.bar
"hi"
end
baz = foo.dup
foo.bar # => "hi"
baz.bar # `<main>': undefined method `bar' for #<Object:0x989b378>
(NoMethodError)
Why the below part didn't work.