如何为开发和生产设置不同的ActionMailer Base smtp设置?

时间:2013-03-06 17:40:13

标签: ruby-on-rails email smtp sendmail actionmailer

我让ActionMailer在生产和开发中都能正常工作。我为每个环境使用不同的smtp设置,使用gmail进行开发,并通过Heroku为生产使用SendGrid帐户。我手动切换setup_mail.rb文件中的设置以在开发中工作,然后在推入生产之前将其切换回来。这可以防止我的gmail密码在github上公开,因为SendGrid / Heroku设置在文件中不需要我的密码:

development 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 Base smtp设置?感谢

1 个答案:

答案 0 :(得分:1)

在production.rb和development.rb中使用此设置,而不是将您的密码硬编码,您也可以在本地使用环境变量,在项目中创建一个.env文件,当您{{1}时将加载该文件in:

cd

在development.rb

中使用EMAIL=me@mysite.com EMAIL_PASSWORD= mypassword AND ENV['EMAIL']
相关问题