2010-09-16 12 views
8

Obecnie umieszczam klucze, których używam, aby uzyskać dostęp do innych API i tym podobnych w pliku environment.rb. W ten sposób jest ona dostępna zarówno podczas uruchamiania lokalnie, jak i na heroku.Jak chronić swoje prywatne klucze podczas korzystania z github, heroku i rozwijania lokalnie?

Jednak chciałbym zacząć udostępniać mój kod publicznie za pośrednictwem github, więc mogę uzyskać pomoc.

Jakie kroki muszę wykonać, aby tak się stało, szczególnie, że mogę testować lokalnie i testować na heroku.

Wygląda na to, że na Heroku istnieje sposób na dodanie klawiszy z wiersza poleceń, więc nie muszą znajdować się w aplikacji Ruby-on-rails. Ale co z rozwojem lokalnym?

Odpowiedz

4

Przenieś je do inicjowania i dodać plik do .gitignore

EDIT:

istnieje katalog o nazwie config w inicjalizatory. Tutaj umieszczasz kod, który powinien działać raz, gdy twoja aplikacja się uruchamia. W przeszłości do tych ustawień używano środowiska environment.rb, ale inicjatory ułatwiają porządek. Chciałbym utworzyć plik w katalogu inicjalizacyjnym o nazwie "load_keys.rb" lub coś podobnego. W tym pliku umieściłbyś dokładny kod z pliku environment.rb, którego nie chcesz w github.

+0

Cześć, przepraszam, co masz na myśli, przenosząc się do inicjatora? – Angela

+0

Nie ma problemu, zaktualizowałem swój pierwotny wpis o więcej informacji o inicjalizatorach. Zakładam, że wiesz co to .gitignore, ponieważ nie pytałeś. –

+0

Tak, dziękuję, jestem zaznajomiony z .gitignore :) Jestem zaznajomiony z katalogiem, ale nie byłam pewna co z nim zrobić ... – Angela

1
  1. Umieść swoje prywatne klucze w ~/.ssh jak zwykle.
  2. Szyfruj swoje prywatne klucze za pomocą hasła.
  3. Zainstaluj keychain.
  4. Dodaj eval $(keychain private-key-file1 private-key-file2 private-key-file3; source ~/.keychain/${HOSTNAME}-sh) do swoich ~/.bashrc, ~/.profile, ~/.bash_profile lub do czego. (Patrz strony pęku kluczy man csh, tcsh, zsh, czy cokolwiek)
16

można używać zmiennych środowiskowych (config vars na Heroku) przechowywać klucze API i nie sprawdzić je do źródła.

Dla project że pracuję nad używam widelca z twitter-auth i zmienił go odczytać tajemnicę klienta i klucz od zmiennych env:

http://github.com/dpmcnevin/twitter-auth/blob/ace5d60a8ed8121cca4c97ef30a0cd025b99bfe1/lib/twitter_auth.rb#L68

OAuth::Consumer.new(
    ENV['oauth_consumer_key'] || config['oauth_consumer_key'],   
    ENV['oauth_consumer_secret'] || config['oauth_consumer_secret'], 
    options 
) 

I wtedy skonfigurować klucze w moim .rvmrc w katalogu projektu dla lokalnego użytku:

export oauth_consumer_key=xxxxxxxxxxxx 
export oauth_consumer_secret=xxxxxxxxxxxxxxxxxxx 
rvm [email protected] 

I wreszcie skonfigurować ENVI Zmienne ronment na Heroku:

$ heroku config:add oauth_consumer_key=xxxxxxxxxxxxx 
$ heroku config:add oauth_consumer_secret=xxxxxxxxxxxxx 
$ heroku config 
DATABASE_URL   => postgres://..... 
RACK_ENV    => production 
oauth_consumer_key => xxxxxxxxxxxxxxxx 
oauth_consumer_secret => xxxxxxxxxxxxxxxxxxx 

Następnie wystarczy upewnić się, że .rvmrc jest w .gitignore a następnie można przesunąć do github bez narażania żadnych kluczy API.

+0

Nie można nikomu z dostępem do pushowania do heroku tylko przeczytać klucze z konfiguracją heroku ? – TLK

Powiązane problemy