発生している問題・エラーメッセージ
Railsアプリの中で、環境変数を用いてメールサーバーの設定をしたいと考えています。
公開するときに、APIキーなどが直接記載されている状態を防ぐためでです。
しかし、環境変数を用いてメールサーバーの設定をすると、うまくメールが送付できません。
外部のメーラ(SendGrid)にリクエストも飛んでいない状態です。
環境変数を用いずに直接記載すると送付できるので、環境変数が上手く設定できていないのだと思います。
試したこと
以下のように環境変数を用いてメールサーバーを設定しています。
config/enviroments/development.rb
Rails.application.configure do config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { port: ENV['SMTP_PORT'], address: ENV['SMTP_SERVER'], user_name: ENV['SMTP_LOGIN'], password: ENV['SMTP_PASSWORD'], authentication: 'plain', enable_starttls_auto: true } end
環境変数はdotenvを使用して設定しています。
/.env
SMTP_PORT=587 . .
Gemfile
group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] gem 'pry-rails' gem 'dotenv-rails' end
コンソールでは環境変数が参照できます
[3] pry(main)> ENV['SMTP_PORT'] => "587"
application.rbにDotenv::Railtie.loadを記載して環境変数の読み込みを早めてみましたが、解決しませんでした。
config/application.rb
require_relative 'boot' require 'rails/all' Bundler.require(*Rails.groups) Dotenv::Railtie.load
調べてみましたが、有効な解決策が見当たらず、質問させていただきました。
利用している環境
ruby 2.3.1
rails 5.2.1
dotenv-rails 2.5.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。