質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

3174閲覧

Dotenvで環境変数が設定できない

haya4

総合スコア11

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/10/11 08:46

発生している問題・エラーメッセージ

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

environments/development.rbの中で環境変数を読み込ませるようにすると、メールが送付できました。

application.rbとdevelopment.rbだと、development.rbの方が読み込まれるの先なんで知ったっけ?

config/enviroments/development.rb

Dotenv::Railtie.load

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

投稿2018/10/11 11:07

haya4

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問