lib/rtml/inherited_instance_variables.rb in rtml-2.0.3 vs lib/rtml/inherited_instance_variables.rb in rtml-2.0.4
- old
+ new
@@ -1,9 +1,16 @@
module Rtml::InheritedInstanceVariables
def copy_ivars_from(source)
ivars = source.instance_variables
ivars -= source.protected_instance_variables if source.respond_to?(:protected_instance_variables)
- ivars.each { |ivar| instance_variable_set(ivar, source.instance_variable_get(ivar)) }
+ ivars -= source.rtml_protected_instance_variables if source.respond_to?(:rtml_protected_instance_variables)
+ ivars.each do |ivar|
+ # as time consuming as this may be, it's still faster than eval("defined?(#{ivar})")
+ # -- and easier to read, too.
+ if !instance_variables.include?(ivar)
+ instance_variable_set(ivar, source.instance_variable_get(ivar))
+ end
+ end
rescue
# fail silently if they can't be copied
end
def initialize_with_inherited_instance_variables(*a, &b)
\ No newline at end of file