#
# = クラスA
#
class A
def test1
puts "A::test1"
end
def test3
puts "test3"
end
def testMethod
puts "testMethod"
end
end
#
# = クラスB
#
class B
def initialize
@a = A.new
end
def test1
puts "B::test1"
end
def test2
puts "test2"
end
def method_missing(id, *params)
# p id.to_s.intern
id = id.to_s.gsub(/_[a-z]/) { |x| x.gsub("_", "").upcase }.intern
begin
@a.send(id, *params)
rescue
raise $!, $!.message, caller
end
end
end
b = B.new
b.test1 # => B::test1
b.test2 # => test2
b.test3 # => test3
b.test_method # => testMethod
b.test4 # => test.rb:37: undefined method 'test4' for #<A:0x293fb8c> (NoMethodError)