En un motor Me ayudan a desarrollar, Forem, utilizamos mattr_accessors
de la constante de nivel superior como esto:
lib/forem.rb
module Forem
mattr_accessor :user_class, :theme, :formatter, :default_gravatar, :default_gravatar_image,
:user_profile_links, :email_from_address, :autocomplete_field,
:avatar_user_method, :per_page
...
A continuación, en el interior config/initializers
que pedir a los usuarios a configúrelos de esta manera:
Forem.user_class = 'User'
Forem.autocomplete_field = :login
Con un nombre de gema corta, no hay mucha diferencia entre esta solución y la otra propondré.
Solución # 2
Aún utilizar mattr_accessors
en su constante de alto nivel, pero ofrecen un método config
en este módulo que toma un bloque y se obtiene el objeto:
module ReallyComplicatedGemName
mattr_accessor :....
def self.config(&block)
yield(self)
end
...
Este La gente puede hacer:
ReallyComplicatedGemName.config do |config|
config.user_class = "User"
...
end
Perfecto, gracias! –