En general, el enfoque tiendo a tomar es:
module Foo
module Plugin
class Base; end
end
end
class Foo::Plugin::Bar < Foo::Plugin::Base; end
La clase Base
para los plugins es una convención encuentra en todo el lugar en los RubyOnRails código base, así como muchos otros. (Por ejemplo ActiveRecord::Base
, ActionController::Base
, etc.)
estoy de acuerdo con el enfoque de @Matheus Moreira donde se utiliza Foo::Plugin
tanto como la clase base y el espacio de nombres para plugins.
La única razón funcional por qué esto no se debe hacer tiene que ver con la convención - en la comunidad Ruby uno encontrará muchos menos instancias de clases como espacios de nombres que los módulos. La única vez que realmente veo las clases utilizadas como espacio de nombres para otra clase es cuando el propósito de dicha clase es privado para la clase de espacio de nombres y no se usa externamente.
Al mirar a [Rails API] (http: //api.rubyonrails .org/classes/ActiveRecord.html), veo que hay más nombres plurales en los módulos que en las clases de espacios de nombres (véase, en la segunda mitad de la página). Sin embargo, no tengo suficiente experiencia con Rails para saber cuándo usar uno y cuándo usar el otro. –