I\'m trying to understand the purpose of a Ruby module from a design pattern perspective.
Is a Ruby module essentially just a class that is only initialized once?
A ruby class is a module you can make instances of. Like a class, a module can have methods, but you cannot make an instance of a module. That's the only difference between them.
In practice, modules are commonly used for:
Here's an example of a module used as a name space:
module MyLib
  class Foo
  end
  class Bar
  end
end
The full name of these classes is MyLib::Foo and MyLib::Bar. Because they are contained in a namespace (which presumably is unique), the names Foo and Bar cannot conflict with a Foo or Bar defined in your program or in another library.
Here's a module used as a mix-in:
module Mixin
  def foo
    puts "foo"
  end
end
Since you can't make an instance of the Mixin module, you get access to foo by including (mixing in) the module:
class MyClass
  include Mixin
end
MyClass.new.foo    # => foo
Like a class, a module can hold functions that do not operate on any instance. To do that, you define class methods in the module:
module SomeFunctions
  def self.foo
    puts "foo"
  end
end
A class method defined in a module is just like a class method defined in a class. To call it:
SomeFunctions.foo    # => foo