Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
########################################################################## Mixin for creating easily cloned objects.
# File rake/cloneable.rb, line 19
def clone
sibling = dup
sibling.freeze if frozen?
sibling
end
Clone an object by making a new object and setting all the instance variables to the same values.
# File rake/cloneable.rb, line 8
def dup
sibling = self.class.new
instance_variables.each do |ivar|
value = self.instance_variable_get(ivar)
new_value = value.clone rescue value
sibling.instance_variable_set(ivar, new_value)
end
sibling.taint if tainted?
sibling
end