6

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

.powenv我有export SENDGRID_PASSWORD="123"

里面有config/initializers/mail.rb

ActionMailer::Base.smtp_settings = {
  :password => ENV['SENDGRID_PASSWORD']
}

因此,当我输入控制台时UserMailer.welcome_mail.deliver,会出现错误“ArgumentError: SMTP-AUTH requested but missing secret phrase”。但是,它从应用程序成功发送邮件。

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

4

3 回答 3

11

尝试

. .powenv

然后

rails c

(点是在当前环境中运行脚本的命令)

于 2013-01-25T16:03:00.917 回答
4

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

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

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

于 2012-06-13T15:00:58.357 回答
2

对于后代,您可以根据您想要的加载顺序将类似的内容添加到您的 environment.rb、development.rb 或初始化程序 (config/initializers/pow.rb):

# 将 pow 环境变量加载到开发和测试环境中
如果 File.exist?(".powenv")
  IO.foreach('.powenv') 做 |line|
    下一个 if !line.include?('export') || 行空白?
    key, value = line.gsub('export','').split('=',2)
    ENV[key.strip] = value.delete('"\'').strip
  结尾
结尾
于 2014-01-22T06:19:47.487 回答