So, if you need to alter some method that you know it's aliased, you may stay unworried: you won't affect the other aliased methods, and you can use them if you need the original behavior.
See my tests and the results below.
#!/usr/bin/ruby
class A
def original_method
puts "original content"
end
alias aliased_method original_method
alias_method :alias_methoded_method, :original_method
end
class B < A
def original_method
puts "modified content"
end
end
class C < A
def aliased_method
puts "modified content"
end
end
class D < A
def alias_methoded_method
puts "modified content"
end
end
[A, B, C, D].each do |klass|
puts "#{klass}:"
obj = klass.new
[:original_method, :aliased_method, :alias_methoded_method].each do |meth|
print "#{meth}: "
obj.send meth
end
puts
end
The results:
A: original_method: original content aliased_method: original content alias_methoded_method: original content B: original_method: modified content aliased_method: original content alias_methoded_method: original content C: original_method: original content aliased_method: modified content alias_methoded_method: original content D: original_method: original content aliased_method: original content alias_methoded_method: modified content
No comments:
Post a Comment