我无法在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已请求但缺少密码短语”。但是,从应用程序中它成功发送邮件。
如何在控制台中提供env变量?
答案 0 :(得分:11)
试
. .powenv
然后
rails c
(dot是在当前环境下运行脚本的命令)
答案 1 :(得分:4)
您的Rails控制台无法访问环境变量,因为Pow会将从<{strong> .powenv
或.powrc
文件传递到 Rails。 .. Rails不会自己读取这些文件。
换句话说,您在ENV['SENDGRID_PASSWORD']
文件中设置.powenv
变量,但在启动Rails控制台时未触及该文件。
您需要在应用程序控制器中设置一个before_filter
来设置ENV['SENDGRID_PASSWORD']
(或者在.powenv
文件中提供另一种类似的阅读方式你的Rails应用程序中before_filter
。)
答案 2 :(得分:2)
对于后代,你可以在environment.rb,development.rb或初始值设定项(config / initializers / pow.rb)中添加这样的内容,具体取决于你想要的加载顺序:
# Load pow environment variables into development and test environments if File.exist?(".powenv") IO.foreach('.powenv') do |line| next if !line.include?('export') || line.blank? key, value = line.gsub('export','').split('=',2) ENV[key.strip] = value.delete('"\'').strip end end