0

我正在通过 SendGrid 为我的 rails 应用程序发送的邮件设置重定向。但是,我对被告知存储凭据的方式并不满意。

正如那里指定那样,他们建议覆盖 config/environment.rb 文件中的 ActionMailers 默认值。我发现我的前任创建了一个 initializers/smtp.rb 文件,他在其中定义了以前的设置,但是通过发现这个文件,我发现了 SMTP 密码......

如果我修改这些文件中的任何一个,有权访问 git 存储库的任何人都将有权访问凭据(包括与我们合作的前端和后端自由职业者)。

我正在考虑创建一个文件,该文件将保留在服务器的共享文件夹中(如 database.yml 文件),并且每次我们部署时都会符号链接到应用程序,这要归功于 capistrano。

你怎么看呢?将这个初始化程序/smtp.rb 移动到服务器的共享文件夹并在部署时对其进行符号链接是否可以?

4

2 回答 2

1

我的建议(我所看到的):

将 API 密钥和敏感信息移动ymlconfig/.

将此 yml 文件加载到变量中,例如

KEYS = YAML::load(File.open("#{RAILS_ROOT}/config/config.yml"))

瞧。

此外,例如,当您将代码放在 GitHub 上时,这config.yml将是您添加到.gitignore. 相反,制作一个config-example.yml并告诉您的开发人员获取他们自己的密钥和密码等,将它们存储在他们的本地config.yml.

于 2012-07-06T15:35:05.650 回答
1

如果您在 *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 有一篇关于如何在其网络上使用环境变量的好文章。

于 2012-07-06T15:41:21.390 回答