2011-10-07 16 views
16

Ho creato un'app Sinatra, che sarà ospitata su Heroku, e la sorgente sarà su GitHub. Il problema è che ho un file con chiavi API, che è attualmente in .gitignore. C'è un modo, che posso spingere il mio repo in heroku con il file chiave ed escludere il file quando si preme su GitHub?Trasferimento di file .gitignore su remoto specifico

Grazie in anticipo!

risposta

15

E 'possibile mantenere un ramo separato solo per la distribuzione, ma ci vuole molta disciplina per mantenere in modo corretto:

  1. Aggiungi un commit a un ramo di produzione che aggiunge il file di configurazione (git add -f per bybass tuoi esclude).
  2. Per aggiornare il ramo di produzione, unire altri rami (ad esempio master).
    Tuttavia, è necessario quindi mai unire il proprio ramo di produzione in qualsiasi altra operazione o avviare rami in base a qualsiasi "commit di produzione" (uno il cui ancestry include il commit "aggiungi le chiavi").

Un percorso più semplice consiste nell'adottare l'abitudine di Heroku di utilizzare le variabili di ambiente per comunicare i valori segreti alle istanze. Vedere la documentazione sul Configuration and Config Vars:

heroku config:add KEY1=foobar KEY2=frobozz 

Poi accedere ai valori tramite ENV['KEY1'] e ENV['KEY2'] nel codice di inizializzazione o dovunque ne avete bisogno. Per supportare le distribuzioni non-Heroku, è possibile definire le stesse variabili d'ambiente o tornare alla lettura dei file di configurazione esistenti se le variabili di ambiente non esistono.

+0

grazie, la tua strada è la via da percorrere :) – skazhy

+0

Insieme alle variabili di ambiente potresti aver bisogno di "https://devcenter.heroku.com/articles/labs-user-env-compile", se le tue variabili sono necessari per l'accesso durante la compilazione di slug. –

3

La gemma Figaro rappresenta un buon modo per gestire questo problema. Simula fondamentalmente l'approccio delle variabili d'ambiente di Heroku localmente e semplifica la sincronizzazione delle chiavi tra il tuo ambiente di sviluppo e Heroku.