me quedo claves de la API y ese tipo de cosas en un yaml config, al igual que
development:
twitter_api_key: stringstringstring
chunky: bacon
production:
twitter_api_key: gnirtsgnirtsgnirts
foo: bar
a continuación, utilizar de Sinatra orden interna set para manejar los datos.
configure do
yaml = YAML.load_file(settings.config + "/config.yaml")[settings.environment.to_s]
yaml.each_pair do |key, value|
set(key.to_sym, value)
end
end
Y entonces puedo acceder a ellos desde los ajustes objeto. Aunque no estoy seguro de por qué no comprometerías el archivo de configuración. . . aquí no existe un gran riesgo de seguridad, ya que solo se puede acceder a las rutas que ha definido explícitamente a través de la web. Supongo que la contraseña de administrador podría almacenarse de la misma manera si no desea ponerla en una base de datos, pero al menos la encriptaría con un salt.
Solo tenga cuidado de no pisar el Configuration settings de Sinatra cuando defina el suyo.
EDIT:
Creo que acabo de dar cuenta por qué prefiere no cometer el archivo de configuración. Si está trabajando en un proyecto de código abierto, seguramente no querrá enviar el archivo de configuración a su repositorio de código abierto, pero deberá enviar el archivo a Heroku para que funcione. Si este es el caso, ya sea:
- Utilice dos repositorios locales separados: uno para el proyecto de código abierto y otro para el proyecto heroku. Simplemente configure el proyecto de código abierto como un repositorio en sentido ascendente en el proyecto Heroku, luego puede buscar cambios.
- Ponga las claves API y la contraseña cifrada/salada en una base de datos; MongoHQ ofrece un nivel gratuito para los usuarios de Heroku como un complemento para el almacenamiento simple de nosql usando MongoDB.