>>>>> "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