From: Steve Midgley Date: 2007-02-19T14:21:03+09:00 Subject: Module that includes both class and instance methods? Hello, I'm trying to create a module that will have class and instance methods that are made available to any object that includes it. I can do the job with two lines of code but would prefer to do it with one line of code if possible (to make sure no one tries to foolishly use only one half of the functionality - it should be all or nothing). Here's what I have so far: [code starts] module Models module Ver def Ver.is_versioned(object) include Models::VersionsTables::InstanceMethods object.extend Models::VersionsTables::ClassMethods end end module VersionsTables module InstanceMethods def instance_test "instance test" end end module ClassMethods def class_test "class_test" end end end end class Live Models::Ver::is_versioned(self) #include Models::VersionsTables::InstanceMethods #extend Models::VersionsTables::ClassMethods end puts "::"+Live.class_test live = Live.new puts live.instance_test [code ends] My code can get the class methods fine - "object.extend" works like a charm: I can't figure out what the equivalent is for an instance method. Or perhaps there's a wonderful way to do this using entirely different syntax? I'd love to be able to say: "extend Modules::Ver" or something like that and have it work - but it seems that no code gets executed that's left open in the Ver module when that module is included or extended? Any thoughts or ideas? Thank you for any help! Steve - The law is an envious monster. - Rex Stout