class<<self
seems like a red herring since the only difference here is the class versus module. Perhaps you are asking: "I want to create an object that I am not going to create, but which exists only as a namespace for some methods (and, possibly, as a singleton with its global state)."
If so, both will work equally well. If it is likely that you want to create a derivative (another object that inherits the same methods), then you should use a class, since it is a little easier to write:
class Variation < Helper
instead
module Helper module OwnMethods # Put methods here instead of class << self end extend OwnMethods end module Variation extend Helper::OwnMethods
However, for a simple namespace, I would usually use a module on the class, since the class implies that an instance will be executed.
source share