[英]How to store credentials for third party services in Rails
我正在通過SendGrid為我的rails應用程序發送的郵件設置重定向。 但是我對我被告知存儲憑證的方式並不滿意。
正如在那里指定的那樣,他們建議覆蓋config / environment.rb文件中的ActionMailers默認值。 我發現我的前任創建了一個初始化器/ smtp.rb文件,他在那里定義了以前的設置,但是通過發現這個文件,我發現了SMTP密碼......
如果我修改這些文件中的任何一個,那么有權訪問git存儲庫的人將可以訪問憑據(包括我們使用的前端和后端自由職業者)。
我正在考慮創建一個文件,該文件將保留在服務器的共享文件夾(如database.yml文件)上,並且每次部署時都會通過capistrano與應用程序符號鏈接。
你怎么看呢? 將此初始化程序/ smtp.rb移動到服務器的共享文件夾並在部署時將其符號鏈接是否可以?
我的建議(我所看到的):
將API密鑰和敏感信息移動到config/
下的yml
文件中。
例如,將此yml文件加載到變量中
KEYS = YAML::load(File.open("#{RAILS_ROOT}/config/config.yml"))
瞧。
此外,例如,當您將代碼放在GitHub上時,這個config.yml
將是您添加到.gitignore
東西。 相反,創建一個config-example.yml
並告訴開發人員獲取自己的密鑰和密碼等,將它們存儲在本地config.yml
。
如果你在* nix上,環境變量是最好的方法
將變量粘貼在.bashrc文件中,如下所示:
// no need for quotation marks
export GMAIL_USER=my_gmail_user_name@gmail.com
export GMAIL_PASSWORD=my_gmail_password
並在你的smtp初始化程序中調用它們,如下所示:
ActionMailer::Base.smtp_settings = {
:user_name => ENV['GMAIL_USER'],
:password => ENV['GMAIL_PASSWORD']
}
重啟bash和你的rails應用。 一切都應該有效。 Heroku有一篇關於如何在他們的網絡上使用env變量的好文章。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.