>>>>> "I" == Ian Macdonald <ian / caliban.org> writes: I> module Foo I> require 'soap/driver' I> class Search I> include SOAP I> attr_reader :key I> def initialize(k) I> Endpoint = 'http://www.foo.com/foobar/' I> Ns = 'urn:fooService' I> @key = k I> a = SOAP::Driver.new(nil, nil, Ns, Endpoint) I> puts a.methods I> end I> end I> end Well, you have written something like this pigeon% cat b.rb #!/usr/bin/ruby module SOAP def SOAP_method end class Driver def Driver_method end end end module Foo class Search include SOAP def initialize puts "=====> in initialize" puts SOAP::Driver.new.methods - Kernel.methods end end end f = Foo::Search.new puts "=====> for f" puts f.methods - Kernel.methods pigeon% pigeon% b.rb =====> in initialize Driver_method =====> for f SOAP_method pigeon% I> In the above Foo module, I'm mixing SOAP into my Search class. The I> call to puts is there to verify that all the expected methods I> associated with the SOAP object are available to me. No, the mixin give you access to all the methods of the module SOAP. It don't give you access to the methods of the *class* SOAP::Driver Guy Decoux