Rails控制台和Pow中的环境变量

Mar*_*rov 6 ruby-on-rails rack-pow

我无法在Rails控制台中访问env变量,而在他们工作的应用程序中.

.powenv我有export SENDGRID_PASSWORD="123"

config/initializers/mail.rb那里:

ActionMailer::Base.smtp_settings = {
  :password => ENV['SENDGRID_PASSWORD']
}
Run Code Online (Sandbox Code Playgroud)

所以在我输入的控制台中UserMailer.welcome_mail.deliver有一个错误'ArgumentError:SMTP-AUTH被请求但是缺少密码短语'.但是,从应用程序,它成功发送邮件.

如何在控制台中使用env变量?

kub*_*oon 11

尝试

. .powenv
Run Code Online (Sandbox Code Playgroud)

然后

rails c
Run Code Online (Sandbox Code Playgroud)

(dot是在当前环境下运行脚本的命令)


Jam*_*ier 4

您的 Rails 控制台无法访问环境变量,因为 Pow 将信息从 或文件传递​​到Rails ...Rails 不会自行读取这些文件。.powenv.powrc

换句话说,您正在文件ENV['SENDGRID_PASSWORD']中设置变量.powenv,但启动 Rails 控制台时并未触及该文件。

您需要before_filter在应用程序控制器中设置一个ENV['SENDGRID_PASSWORD'](或提出另一种类似的.powenvbefore_filterRails 应用程序中读取文件的方法)。