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