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 结束 结束