Rails 3在environment.rb中发送电子邮件密码?推送到git安全吗?

时间:2011-05-28 12:54:31

标签: ruby-on-rails security

我确定不应将我的电子邮件密码发布到environment.rb文件中的公共git存储库。有没有办法避免这种情况,而不将整个文件包含在.gitignore中?

3 个答案:

答案 0 :(得分:9)

您可以将电子邮件凭据保存在另一个文件config / email.credentials.yml中:

host: ...
username: ...
password: ...
...

并在您的environment.rb文件中加载它们(例如):

YAML.load_file("#{Rails.root}/config/email.credentials.yml")['username']

然后你会在.gitignore文件中提到凭证文件。

此外,如果您在多个服务器上部署应用程序,则可能会检查该文件是否存在于初始化程序中,否则会引发错误。因此,除非邮件配置文件存在,否则请确保应用程序无法启动。

答案 1 :(得分:0)

我还发现了另一种可能更容易的方法:

配置/初始化/为setup_mail.rb。在那里为gmail应用程序添加以下内容(示例):

ActionMailer::Base.smtp_settings = {
  :enable_starttls_auto => true,
  :address => 'smtp.gmail.com',
  :port => 587,
  :domain => 'domain.name',
  :authentication => :plain,
  :user_name => 'namd@domain.name',
  :password => 'secret'
}

然后只需添加到.gitignore文件即可。这样您只能编辑2个(而不是3个)文件。

答案 2 :(得分:0)

这就是我使用的:

instance_eval File.read "#{ Rails.root }/config/confidential.rb"

和confidential.rb是一个文件:

config.pass1 = '1234'
config.pass2 = '54r235'