2011-11-18 100 views
13

我剛剛設置了Devise(rails認證插件)在註冊時發送確認電子郵件。這涉及到我的推杆以下到我的environment.rb文件中:從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]" 
} 

我顯然不希望推動這個了[我的通行證]只是坐在那裏github上。這裏有一個標準的做法嗎?

回答

10

標準是將您的配置設置放入一個未包含在您的倉庫中的YAML文件。

然後您只需從中獲取數據。

查看Railscast「#85 YAML Configuration File」以查看它的行動。

+0

當然,如果你只打算從ruby訪問你的配置文件,有[社區成員](http://www.amazon.ca/Distributed-Programming-Ruby-Mark-Bates/dp/0321638360 )誰[喜歡配置在...紅寶石](http://www.metabates.com/2011/06/28/lets-say-goodbye-to-yaml-for-configuration-shall-we/)。 –

+0

獲取數據可能涉及'config/initializers'中的一個文件,它表示類似於'CONFIG = YAML.load_file(「#{:: Rails.root.to_s} /config/config.yml」)[:: Rails。 ENV]' – jimworm

1

創建一個包含郵件設置的配置文件並從文件加載它們。檢查配置文件中刪除的所有設置。讓您的應用程序檢查文件是否被填充,如果不是,則顯示錯誤並正常退出(或禁用郵件,只需確保用戶知道發生了什麼)。

這具有額外的優勢,用戶可以輕鬆地更改郵件設置,而無需編輯代碼。通常,告訴用戶編輯代碼來設置配置是一個壞主意。此外,您可以將配置保存在與代碼不同的位置,以便更輕鬆地進行操作。

4

apneadiving是正確的,添加到他的解決方案中,其他人下載你的代碼,可能不會很快找出如何生成這個yml,所以你需要給他們一個提示,具有以下結構:

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

具有文件「mail_settings.yml」包含您的敏感信息,而不包括在回購協議,並有「main_settings.yml.example」包含在你的回購,並具有相同的結構「mail_settings.yml」 。

爲了提供更多幫助,請在您的README文件中提供一個部分,描述人們需要將mail_settings.yml.example文件複製到mail_settings.yml並增強其內容。