簡體   English   中英

如何在Rails中存儲第三方服務的憑據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM