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

我无法在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 required but missing secret phrase’。 但是从应用程序中它成功发送邮件。

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

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

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

您需要在Application Controller中设置一个before_filter来设置ENV['SENDGRID_PASSWORD'] (或者在Rails应用程序中的before_filter中提供另一.powenv文件读取方式)。

尝试

 . .powenv 

然后

 rails c 

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

对于后代,您可以将这样的内容添加到environment.rb,development.rb或初始化程序(config / initializers / pow.rb),具体取决于您想要的加载顺序:

 #将pow环境变量加载到开发和测试环境中
如果File.exist?(“。powenv”)
   IO.foreach('。powenv')do | line |
    下一个if!line.include?('export')||  line.blank?
     key,value = line.gsub('export','')。split('=',2)
     ENV [key.strip] = value.delete('“\'')。strip
  结束
结束