From: Jan Wedekind Date: 2009-02-10T22:58:53+09:00 Subject: [ruby-core:21953] [Bug #1135] Problem renaming CMath.hypot in Ruby1.9 Bug #1135: Problem renaming CMath.hypot in Ruby1.9 http://redmine.ruby-lang.org/issues/show/1135 Author: Jan Wedekind Status: Open, Priority: Normal Category: core, Target version: 1.9.1 ruby -v: ruby 1.9.1p0 (2009-01-30 revision 21907) [x86_64-linux] # Running the following program with Ruby1.9 ... require 'complex' class Module def alias_method_chain( target, feature ) alias_method "#{target}_without_#{feature}", target alias_method target, "#{target}_with_#{feature}" end end Math.module_eval do define_method( :hypot_with_test ) do |a,b| puts "hypot_with_test( #{a}, #{b} )" hypot_without_test( a, b ) end alias_method_chain :hypot, :test module_function :hypot_without_test module_function :hypot end puts Math.hypot( 3, 4 ) # ... results in this error: # t.rb:14:in `module_function': undefined method `hypot_without_test' for module `CMath' (NameError) # from t.rb:14:in `block in
' # from t.rb:8:in `module_eval' # from t.rb:8:in `
# # Using Ruby 1.8.6 the same program runs without error. The problem also does not occur if 'complex' is not loaded. ---------------------------------------- http://redmine.ruby-lang.org