Ruby on rails Rails 5.2未加载环境变量

Ruby on rails Rails 5.2未加载环境变量,ruby-on-rails,environment-variables,Ruby On Rails,Environment Variables,我已经定义了Gmail用户名和密码,在ActionMailer配置中用于发送电子邮件,并在配置中以以下方式使用它们: config.action_mailer.smtp_settings = { address: "smtp.gmail.com", port: 587, domain: "example.com", authentication: :plain,

我已经定义了Gmail用户名和密码,在ActionMailer配置中用于发送电子邮件,并在配置中以以下方式使用它们:

config.action_mailer.smtp_settings = {
    address:              "smtp.gmail.com",
    port:                 587,
    domain:               "example.com",
    authentication:       :plain,
    user_name:            ENV["GMAIL_USERNAME"],
    password:             ENV["GMAIL_PASSWORD"],
    enable_starttls_auto: true
}
在这个设置中,电子邮件不会被发送,但是如果我手动输入用户名和密码作为字符串,它就会工作。 我已经在rails控制台中正确定义了变量:

rails c
ENV["GMAIL_USERNAME"] #=> "my_username"
我已注销并重新登录到系统,并重新启动终端以获取我的.bash_配置文件
echo$GMAIL\u用户名
返回正确的值。
todos#index
action I
put ENV[“GMAIL_USERNAME”]
中,它还返回正确的用户名。那为什么不起作用呢?有什么想法吗?

那么,你是在服务器上运行的吗?前面有apache或nginx吗?将
GMAIL\u用户名
放入用户的
。bashrc
不会有帮助,因为运行rails应用程序的任何服务器都不会读取
。bashrc

我刚刚用Sendgrid设置了我的rails应用程序,它工作正常,所以这一定是GMAIL的问题。它过去对我很有用,所以可能他们改变了一些东西。

你是如何知道问题出在环境变量上的?正如我所说,在我手动将用户名和密码设置为实际用户名和密码后,它工作得很好,但现在我再试了一次,结果不起作用。我可以发誓它昨天起作用了:(那是什么问题?我不知道。我又发现了一个类似的问题没有得到回答。你可以尝试一些不同的方法,比如
“{ENV['GMAIL\u USERNAME']}”
然后看看它是否有效。尽管这样做似乎毫无意义。否则,如果不挖掘引发错误的系统,就很难判断错误。它们是如何设置的,你是在使用
dot env
gem还是什么?可能是你必须在GMail中打开一个设置才能使用SMTP。IMAP有一个。