El class<<self
parece ser una pista falsa, ya que la única diferencia aquí es una clase frente a un módulo. Tal vez esté preguntando "Quiero crear un objeto que no pretendo instanciar, pero que existe solo como un espacio de nombres para algunos métodos (y posiblemente como un singleton con su propio estado global)."
Si este es el caso, ambos funcionarán igual de bien. Si hay alguna posibilidad de que es posible que desee crear un derivado (otro objeto que hereda los mismos métodos) entonces debe usar una clase, ya que poco es más fácil escribir:
class Variation < Helper
en lugar de
module Helper
module OwnMethods
# Put methods here instead of class << self
end
extend OwnMethods
end
module Variation
extend Helper::OwnMethods
Sin embargo, solo para el espaciado de nombres generalmente usaría un módulo sobre una clase, ya que una clase implica que se realizará una instanciación.
¿Una de ellas tiene una letra extra que la otra? :) ¿Qué quieres decir con "¿hay alguna diferencia"? Una es una clase, una es un módulo y en ambas está ingresando la clase propia. – Phrogz
Creo que quiero preguntar, ¿cuándo usarías una sobre la otra? Edité la pregunta para reflejar eso. –