Переменная окружения в консоли Rails и Pow

Я не могу получить доступ к переменным env в консоли Rails, в то время как в приложении они работают.

на .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 доступными в консоли?

3 ответов


ваша консоль Rails не может получить доступ к переменной среды, потому что Pow передает информацию С на .powenv или на рельсы ... Рельсы не читает эти файлы.

другими словами, вы устанавливаете ENV['SENDGRID_PASSWORD'] переменная .powenv файл, но этот файл не трогается при запуске консоли Rails.

вам нужно настроить before_filter в контроллере приложения, который устанавливает ENV['SENDGRID_PASSWORD'] (или придумайте другой, похожий, способ чтения в с before_filter в вашем приложении Rails).


попробовать

. .powenv

затем

rails c

(точка-это команда для запуска скрипта в текущей среде)


для потомков вы можете добавить что-то подобное в свою среду.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