嗨我在heroku和github上有我的rails应用程序,我目前正在我的应用程序中使用邮件程序:
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:user_name => "myemail@gmail.com",
:password => "PasswordShouldGoHere",
:authentication => "plain",
:enable_starttls_auto => true
}
Run Code Online (Sandbox Code Playgroud)
我不希望我的电子邮件和密码在我的github帐户上可见,因为人们只能登录并窃取我的信息.但是,如果我输入了一个假密码,那么当邮件发送时,我的应用程序会在heroku上给我一个错误.我知道我可以先将真实的电子邮件和密码推送到heroku然后编辑它并将假密码放在我的github帐户上,但是有更好的方法吗?
Ash*_*aka 48
像其他人说的那样,你可以通过使用ENV变量来实现这种安全性.这是怎么做的:
config.action_mailer.smtp_settings = {
user_name: ENV["MAILER_EMAIL"],
password: ENV["MAILER_PASSWORD"]
}
Run Code Online (Sandbox Code Playgroud)
现在,在生产(Heroku)中,您所要做的就是遵循本指南.它基本上等于打开你的控制台并键入:
heroku config:set MAILER_EMAIL=email@example.com MAILER_PASSWORD=password
Run Code Online (Sandbox Code Playgroud)
在开发中,您可以在config/initializers文件夹中创建一个文件,其中包含一个提示名称app_env_vars.rb.在其中,放置以下内容:
ENV['MAILER_EMAIL'] = 'email@example.com'
ENV['MAILER_PASSWORD'] = 'password'
Run Code Online (Sandbox Code Playgroud)
要防止将新创建的文件推送到源代码管理中,您应该将其添加到.gitignore:
/config/initializers/app_env_vars.rb
Run Code Online (Sandbox Code Playgroud)
但是,有一个问题,因为初始化文件只在环境之后加载,所以还有最后一件事要做.转到您的environment.rb文件,并添加以下之前的Yourapp::Application.initialize!:
# Load the app's custom environment variables here, before environments/*.rb
app_env_vars = File.join(Rails.root, 'config', 'initializers', 'app_env_vars.rb')
load(app_env_vars) if File.exists?(app_env_vars)
Run Code Online (Sandbox Code Playgroud)
你完成了!
但是,如果您发现所有这些配置都很麻烦,那么我建议您使用费加罗宝石.它完成了我描述的所有内容!
| 归档时间: |
|
| 查看次数: |
6588 次 |
| 最近记录: |