Estoy desarrollando un Rails Engine que maneja el mecanismo OAuth con un tercero. Me gustaría tener toda la configuración en un atributo Struct, por lo que todos los datos de configuración del motor se almacena junto:Rails Configuración del motor
require 'rails'
module ThirdParty
class Engine < ::Rails::Engine
initializer "third-party.some_init_task" do |app|
ThirdPartyConfig = Struct.new(:uri, :client_id, :client_secret, :redirect_uri)
app.config.thirdparty = ThirdPartyConfig.new
app.config.thirdparty.uri = "https://thirdparty.com"
app.config.thirdparty.client_id = ""
app.config.thirdparty.client_secret = ""
app.config.thirdparty.redirect_uri = ""
end
end
end
Algunos de la configuración debería definirse en los inicializadores nivel de aplicación:
class Application < Rails::Application
config.thirdparty.client_id = <valid_client_id>
config.thirdparty.client_secret = <valid_client_secret>
config.thirdparty.redirect_uri = <redirect_uri>
end
Pero como config.thirdparty aún no está definido al cargar el inicializador de la aplicación, falla.
Gracias @cowboycoded !! Cambié los datos de configuración de la aplicación a un inicializador en lugar de escribirlo en application.rb. También he establecido un valor válido para el parámetro: before en Rails Engine como sugirió. Realmente digno de tu ayuda !!! – juandebravo
@juandebravo ¿qué valor le dio a la entrada ': before'? – vemv