On Feb 11, 2007, at 4:26 PM, Christopher J. Bottaro wrote:

> I'm writing a module that is to be used as a mixin for classes.  I
> cannot create or access class variables from within module methods.
> Please look at this small pastie.  It contains the module definitions,
> class definitions, and some sample code that demonstrates the errors
> I'm receiving.

Class variables have confusing inheritance rules, that I don't think  
are worth learning.  (They are changing in a future version of Ruby.)

Instead, it's almost always easier to use instance variables on the  
class/module itself.  Your code could do this with changes like:

module MyModule

    def self.included base
       base.extend ForBase
    end # def self.included

    module ForBase

      def message
       @message
      end

      def message=(message)
       @message = message
      end

       def acts_as_whatever options = {}
          include MyModule::InstanceMethods
          extend MyModule::ClassMethods

          if options.has_key? :message
             self.message = options[:message]
          else
             self.message = "no message"
          end
       end # def acts_as_whatever

    end # module ForBase

    module InstanceMethods

       def show_message
          puts self.class.message
       end

    end # module InstanceMethods

    module ClassMethods

       def print_message
          puts message
       end

    end # module ClassMethods

end # module MyModule

James Edward Gray II