Production.rb不读取生产中的环境变量

时间:2019-01-14 04:43:58

标签: ruby-on-rails digital-ocean production-environment

我正在为生产应用程序使用此动作邮件程序设置

config.action_mailer.smtp_settings = {
    address:              'smtp.gmail.com',
    port:                 587,
    domain:               'example.com',
    user_name:            ENV['EMAIL'],
    password:             ENV['EMAIL_PASSWORD'],
    authentication:       'login',
    enable_starttls_auto: true
  }

我在DigitalOcean小滴(Ubuntu 14.04)上跑了

export EMAIL="email"
export EMAIL_PASSWORD="password"

但是,它不起作用。我还尝试将它们添加到我的.bashrc文件中,但这也不起作用。

我知道其他职位可能会建议使用figaro宝石或dotenv之类的东西,但是,我真的不知道该如何使用这些宝石。该应用程序适用于希望使用smtp发送电子邮件的客户。我将无法获取他们的凭据并将其存储在本地计算机上。幸运的是,在DigitalOcean上访问服务器非常容易,因为它在网站上具有内置的ssh功能,使您可以访问Droplet。

这意味着他们将必须手动输入export EMAIL="theiremailgoeshere"行,并输入相同的密码。但是如上所述,由于某些原因,这是行不通的

感谢您的帮助,非常感谢!

我不知道这是否有帮助,但是我使用的是Digital Ocean小程序来托管我的网站。我正在运行一个Ubuntu(14.04)映像,并且正在使用Nginx和Passenger。

1 个答案:

答案 0 :(得分:0)

来自likesImg.onClick { print("Hello!!") }

Env vars仅针对使用bash shell打开的程序设置。如果您以一个用户的身份进入系统,并且您的Web服务器以单独的特权较低的用户身份运行,也会出现问题。

您可以在~/.bashrc/etc/environment中设置system wide env vars in Ubuntu。这些ENV变量将为所有用户和所有打开的shell(甚至是从GUI打开的程序)设置。

不过,我建议您使用更具体的密钥,例如/etc/profile.d/*.sh以避免潜在的冲突。