我正在使用capistrano部署我的rails应用程序并使用瘦服务器。我有2个env vars用于我的邮件用户名和密码在〜/ .bash_profile中使用export SMTP_USERNAME=...
定义。
当我ssh到服务器并尝试从rails控制台发送电子邮件时,它工作正常但看起来当我运行cap deploy
或任何其他命令时它们不会被瘦。
定义它们的正确方法是什么?我已经看到一些帖子,他们建议直接在config/environments/production.rb
或与代码本身相关的其他文件中定义它们。出于安全原因,我试图避免这种情况。
更新:我尝试使用yml文件来存储,但我遇到了这个问题:
我在email_config.rb
中创建了一个新文件config/initializers
。其内容是:
EMAIL_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/email.yml")[RAILS_ENV]
在config/email.yml
我有:
production:
username: username
password: password
在config/environments/production.rb
我有:
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default :charset => "utf-8"
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
authentication: :plain,
enable_starttls_auto: true,
user_name: EMAIL_CONFIG[:username],
password: EMAIL_CONFIG[:password]
}
现在的问题是初始化器是在environments.rb
之后加载的,如果我在电子邮件配置之前放置了EMAIL_CONFIG
变量的定义,那么RAILS_ROOT
变量就没有定义。 / p>
答案 0 :(得分:0)
就像你说的那样,直接在production.rb中保存密码不是神的想法。更好的选择是从shell变量(更接近当前设置)或yaml文件(我个人做)中引用它们。您可以在this post
中找到更多信息