Mixin with A::B syntax

Greetings,

I still can't get this syntax to work. Here is a smaller program
that I am trying to get to run. Thank you for all your help.

This is the error message I get:

[Abba:/tmp] josephal% ./test
../test:5: Mysql is not a module (TypeError)

[Abba:/tmp] josephal% cat ./test
#!/usr/bin/ruby

require 'mysql'

module Mysql
  class Result
      def foo
        print "This is foo\n"
      end
  end
end

m = Mysql.new("localhost", "root", "", "Development")

r = m.query("select * from processedfiles limit 5")

r.foo

[Abba:/tmp] josephal%

···

From: dblack@wobblini.net
   Subject: Re: mixin with A::B syntax
   Date: September 23, 2004 7:40:38 PM CDT
   To: undisclosed-recipients: ;

Hi --

On Fri, 24 Sep 2004, Brian Schroeder wrote:

On Thu, 23 Sep 2004 19:52:01 +0000, eagle eyes joe wrote:

Greetings,

I want to define a generic print method to use in debugging. I got the
mix in syntax okay for classes like Hash or String, but for
Mysql::Result,
it doesn't seem to work. What would the proper syntax be?

Joe Alotta

#!/usr/bin/ruby

require 'mysql'

class Mysql::Result
def print
    self.each_hash do |i|
        i.each do |k, v| { print "#{k} = #{v} "} puts

   end
end
end

m = Mysql.new("localhost", "root", "", "Development")

s = m.query("select * from symbols where type = 'MU'")

s.print

Joe Alotta

module Mysql
  class Result
    def print
      [...]
    end
  end
end

I believe that should have the same effect as Joe's example. The only
difference between going one at a time and doing Mysql::Result is the
scope of constants.

David

--
David A. Black
dblack@wobblini.net

The reason for this error is that Mysql is defined as class not module.

Try to change your example to:

class Mysql
  class Result
       def foo
         print "This is foo\n"
       end
   end
end

Cheers,
Kent.

···

On Sep 25, 2004, at 9:09 PM, eagle eyes joe wrote:

Greetings,

I still can't get this syntax to work. Here is a smaller program
that I am trying to get to run. Thank you for all your help.

This is the error message I get:

[Abba:/tmp] josephal% ./test
../test:5: Mysql is not a module (TypeError)

[Abba:/tmp] josephal% cat ./test
#!/usr/bin/ruby

require 'mysql'

module Mysql
  class Result
      def foo
        print "This is foo\n"
      end
  end
end

m = Mysql.new("localhost", "root", "", "Development")

r = m.query("select * from processedfiles limit 5")

r.foo

[Abba:/tmp] josephal%

   From: dblack@wobblini.net
   Subject: Re: mixin with A::B syntax
   Date: September 23, 2004 7:40:38 PM CDT
   To: undisclosed-recipients: ;

Hi --

On Fri, 24 Sep 2004, Brian Schroeder wrote:

On Thu, 23 Sep 2004 19:52:01 +0000, eagle eyes joe wrote:

Greetings,

I want to define a generic print method to use in debugging. I got the
mix in syntax okay for classes like Hash or String, but for
Mysql::Result,
it doesn't seem to work. What would the proper syntax be?

Joe Alotta

#!/usr/bin/ruby

require 'mysql'

class Mysql::Result
def print
    self.each_hash do |i|
        i.each do |k, v| { print "#{k} = #{v} "} puts

   end
end

m = Mysql.new("localhost", "root", "", "Development")

s = m.query("select * from symbols where type = 'MU'")

s.print

Joe Alotta

module Mysql
  class Result
    def print
      [...]
    end
  end
end

I believe that should have the same effect as Joe's example. The only
difference between going one at a time and doing Mysql::Result is the
scope of constants.

David

--
David A. Black
dblack@wobblini.net