2011-11-18 15 views
13

Ho appena installato Devise (plugin di autenticazione delle rotaie) per inviare un'email di conferma al momento della registrazione. Ciò ha comportato la mia mettere quanto segue nel mio file environment.rb:Nascondere le mie informazioni sensibili (ad es. Password) da github

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = { 
    :tls => true, 
    :address => "smtp.gmail.com", 
    :port => 587, 
    :domain => "gmail.com", 
    :authentication => :login, 
    :user_name => "[my email]", 
    :password => "[my pass]" 
} 

io ovviamente non voglio spingere questo fino a GitHub con [il mio pass] appena seduto lì. Esiste una pratica standard qui?

risposta

10

Lo standard consiste nel mettere le impostazioni di configurazione in un file YAML che non è incluso nel repository.

Quindi è sufficiente ottenere i dati da esso.

Controllare Railscast "#85 YAML Configuration File" per vederlo in azione.

+0

Naturalmente, se si desidera accedere al proprio file di configurazione da Ruby, esistono [membri della comunità] (http://www.amazon.ca/Distributed-Programming-Ruby-Mark-Bates/dp/0321638360) chi [preferisce configurare in ... ruby] (http://www.metabates.com/2011/06/28/lets-say-goodbye-to-yaml-for-configuration-shall-we/). –

+0

Ottenere i dati potrebbe coinvolgere un file in 'config/initializers' che dice qualcosa come' CONFIG = YAML.load_file ("# {:: Rails.root.to_s} /config/config.yml") [:: Rails. ENV] ' – jimworm

1

Creare un file di configurazione contenente le impostazioni di posta e caricarle da un file. Controlla il file di configurazione con tutte le impostazioni cancellate. Fai controllare la tua applicazione per vedere se il file è compilato, e se non lo è, mostra un errore ed esci con garbo (o disabilita la posta, assicurati solo che l'utente sappia cosa sta succedendo).

Questo ha il vantaggio aggiunto che gli utenti possono facilmente modificare le impostazioni della posta senza dover modificare il codice. Dire a un utente di modificare il codice per impostare una configurazione è, in generale, una cattiva idea. Inoltre, è possibile mantenere la configurazione in una posizione separata dal codice in modo che sia più facile da raggiungere.

4

apneadiving è corretto, aggiungendo alla sua soluzione, altra gente che scarica il codice, potrebbe non capire rapidamente come generare questo yml, quindi sarà necessario dare loro un suggerimento, avendo la seguente struttura:

config 
    | 
    |--- environment.rb 
    |--- mail_settings.yml 
    |--- main_settings.yml.example 

avere il file 'mail_settings.yml' contiene le informazioni sensibili e non inclusi nel pronti contro termine, e hanno 'main_settings.yml.example' inclusa nella repo, ed aventi la stessa struttura come 'mail_settings.yml' .

E per essere più utile, fornisci una sezione nel tuo file README, descrivendo che le persone devono copiare il file mail_settings.yml.example su mail_settings.yml e migliorarne il contenuto.

Problemi correlati