Да, модули являются ответом в целом. Если у вас есть более конкретные потребности (например, наличие класса, объединяющего функциональность двух разных классов), существуют другие варианты, например делегирование.
Обратите внимание, что если вам нужен модуль для предоставления методов класса для тех, кто его наследует, вы, вероятно, захотите использовать этот общий шаблон:
module Foo
def aaa
"hi"
end
module ClassMethods
def bbb
"mom"
end
end
def self.included( other )
other.extend ClassMethods
end
end
class Bar
include Foo
end
puts Bar.new.aaa, Bar.bbb
#=> hi
#=> mom