twelve the services microservicios metodologia methodologies factores factor espaƱol costos beyond backing application app aplicacion ruby-on-rails configuration heroku 12factor

ruby-on-rails - the - metodologia 12 factor



Gestionando la configuraciĆ³n en aplicaciones de 12 factores. (3)

Lo que normalmente uso es Yaml usando la ENV y proporcionar valores predeterminados. Por ejemplo, YAML puede ser ERB''ed felizmente para incluir sus variables ENV:

foo: var: ENV["MY_CONFIG"] || "default_value"

Solo debe asegurarse de cargar el Yaml con ERB cuando lo lea:

YAML.load(ERB.new(File.read("#{Rails.root}/config/app_config.yml")).result)

Al hacer esto, su código funciona bien en dev, pero también le permite establecer configuraciones de configuración en el entorno.

He disfrutado utilizando Rails en Heroku, y así puedo ajustar la propiedad de configuración de una aplicación de Heroku sin tener que confirmar un cambio en xyz.yml y xyz.yml desplegar.

Sería bueno eliminar completamente los archivos de configuración de Yaml en mi aplicación Rails, y confiar tanto como sea posible en el almacenamiento de la configuración en ENV. Esto va de acuerdo con el principio de configuración de 12 factores .

Sin embargo, hay algunos inconvenientes al cambiar de una gestión de configuración basada en Yaml a una basada en factores de Heroku / 12.

  • Si bien es cierto que una proliferación de implementaciones (qa, stage, prod, dev, demo, labs) puede llevar a una proliferación de archivos Yaml, es muy fácil copiar y pegar para crear un nuevo perfil de configuración. No veo una manera de ''copiar'' los perfiles de configuración de una implementación a otra en Heroku.
  • El almacenamiento de los datos de configuración en el repositorio significa que, en el caso de Heroku, la implementación, la configuración y la aplicación se realizan en una sola operación. Si tuviera que mover mi configuración de los archivos Yaml a las variables ENV, tendría que configurar mi aplicación en un paso separado después de la implementación.

Me gustaría saber de personas que han usado la configuración de estilo de 12 factores en sus aplicaciones privadas y cómo han administrado muchas variables de configuración en muchas implementaciones.

  • ¿Cómo configurar rápidamente un nuevo despliegue?
  • ¿Dónde guarda su fuente autorizada de variables de configuración, si no el repositorio? ¿Cómo lo distribuyes entre los desarrolladores?

¡Gracias!


Puede lograr esto de manera relativamente fácil con algunos scripts de shell simples, iterar las variables existentes a través de heroku config o heroku release: info v99, y luego configurar heroku config: set k = v --app

Pero si es un problema / dolor / fricción, quizás tenga demasiado dentro de su configuración env var.


Una respuesta tardía, pero creo que esto es lo que está buscando.

Desarrollé una gema llamada settei , que te permite usar archivos YAML para configurar la aplicación. Sin embargo, la gema serializará el archivo YAML como una variable de entorno durante la implementación. De esta manera, se obtiene lo mejor de ambos mundos: YAML para facilitar la administración / creación de entornos derivados, y ENV para el cumplimiento de 12 factores.