在Rails的控制台和战俘环境变量(Environment variable in Rails co

2019-06-24 06:59发布

我无法访问在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变量?

Answer 1:

你的Rails控制台不能因为战俘传递信息访问环境变量.powenv.powrc文件 Rails ...... Rails不读自己的那些文件。

换句话说,你设置ENV['SENDGRID_PASSWORD']在变量.powenv文件,但是当你开始Rails的控制台文件不被感动。

你需要建立before_filter在你的应用程序控制器,可设置ENV['SENDGRID_PASSWORD']或者想出另一个,在阅读类似,方式.powenv从内部文件before_filter在您的Rails应用程序)。



Answer 2:

尝试

. .powenv

然后

rails c

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



Answer 3:

对于后人,您可以添加这样的事情要么你的environment.rb,development.rb,或取决于你想要什么样的加载顺序的初始化(配置/初始化/ 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


文章来源: Environment variable in Rails console and Pow