2011-10-07 9 views
16

Hice una aplicación Sinatra, que será alojado en Heroku, y la fuente será hasta en GitHub. El problema es que tengo un archivo con claves API, que actualmente está en .gitignore. ¿Hay alguna manera de que pueda enviar mi repositorio a heroku con el archivo de clave y excluir el archivo cuando presiono a GitHub?empujando archivos .gitignore a determinada distancia

¡Gracias de antemano!

Respuesta

15

Es posible mantener una rama separada sólo para el despliegue, pero se necesita mucha disciplina para mantener correctamente:

  1. Añadir un comprometerse a una rama de producción que añade el archivo de configuración (git add -f a bybass sus excluye)
  2. para actualizar su rama de producción, fusionar otras ramas (por ejemplo master) en ella.
    Sin embargo, debe entonces Nunca fusionar su rama de producción en cualquier otra cosa, o iniciar ramas en función de cualquier “producción cometer” (uno cuya ascendencia incluye su “agregar las claves” commit).

Una ruta más fácil es adoptar la costumbre de Heroku de usar variables de entorno para comunicar sus valores secretos a sus instancias. Consulte la documentación de Configuration and Config Vars:

heroku config:add KEY1=foobar KEY2=frobozz 

luego acceder a los valores a través ENV['KEY1'] y ENV['KEY2'] en el código de inicialización o donde los necesite. Para admitir las implementaciones que no son de Heroku, puede definir las mismas variables de entorno o volver a leer los archivos de configuración existentes si las variables de entorno no existen.

+0

gracias, el heroku envvars es el camino a seguir :) – skazhy

+0

Junto con las variables de entorno es posible que necesite "https://devcenter.heroku.com/articles/labs-user-env-compile", si sus variables son necesarios para acceder durante la compilación de slug. –

3

El Figaro joya proporciona una buena manera de manejar este problema. Básicamente simula el enfoque de la variable de entorno de Heroku localmente, y hace que sea fácil mantener tus claves sincronizadas entre tu entorno de desarrollo y Heroku.

Cuestiones relacionadas