我让ActionMailer在生产和开发中都能正常工作。我对每个环境使用不同的smtp设置,gmail用于开发,SendGrid帐户用于生产。我手动切换setup_mail.rb文件中的设置以在开发中工作,然后在推送到生产环境之前将它们切换回来。这将防止我的gmail密码在github上公开,因为SendGrid/Heroku设置不需要在文件中包含我的密码:
开发setup_mail.rb
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "mysite.com",
:user_name => "me@mysite.com",
:password => 'mypassword',
:authentication => "plain",
:enable_starttls_auto => true
}生产setup_mail.rb
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com'
}
ActionMailer::Base.delivery_method = :smtp我担心我会不小心将开发设置和我的密码推送到github。我想停止手动切换设置,以防止这种情况发生。如何为开发和生产设置不同的ActionMailer基本smtp设置?谢谢
发布于 2013-03-07 01:46:13
在production.rb和development.rb中设置此设置,而不是将密码硬编码,您也可以在本地使用环境变量,在您的项目中创建一个.env文件,该文件将在您使用cd时加载:
EMAIL=me@mysite.com
EMAIL_PASSWORD= mypassword在development.rb中使用ENV['EMAIL']和ENV['EMAIL_PASSWORD']
https://stackoverflow.com/questions/15254244
复制相似问题