我正在使用 capistrano 部署我的 rails 应用程序并使用瘦服务器。我在 ~/.bash_profile 中定义了 2 个用于我的邮件用户名和密码的环境变量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
变量就没有定义。