Ruby
Rails
Git
Heroku
SendGrid

rails 11章 sendgridメールが作成されない時の解決方法

【sendgridメールが作成されない時の解決方法】

約一日はまったのでメモとして残しておく。

【原因】

SENDGRID_USERNAMEが設定されていなかった

【経緯】

11章の最後、herokuへデプロイし、本番環境から新規ユーザ登録するも、

We're sorry, but something went wrong.

の画面が表示される。

そのページを再読み込みすると、ユーザは登録されているが、sendgridの有効化メールが作成されていない状態であることが判明。

【行ったこと】

コンソールにてheroku logsでログ確認

出ていたエラーは

FATAL--Completed 500 Internal Server Error

FATAL--Net::SMTPAuthenticationError (535 Authentication failed: Bad username / password

FATAL--app/models/user.rb:49:in `send_activation_email'

各ファイルを見直すも、コードの書き間違い等は見当たらず。。

もう一度11.4からやり直し、

$ heroku config:get SENDGRID_USERNAMEを実行したところ、

SENDGRID_USERNAMEの値が設定されておらず、ブランクになっていることが発覚。

(設定していたはずだが、エラーではまっている途中herokuのdbをリセットしたのでその時に消えたのでしょうか。。)

SENDGRID_PASSWORDは設定出来ている。

そのため、SENDGRID_USERNAMEを再設定します。

値を確認するコマンド

heroku config:get SENDGRID_USERNAME

heroku config:get SENDGRID_PASSWORD

値を設定するコマンド

heroku config:set SENDGRID_USERNAME=設定したい値〇〇〇

heroku config:set SENDGRID_PASSWORD=設定したい値〇〇〇

設定したいUSER_NAMEをsendgridのアカウントページで確認する。

その後コンソールにて

$ heroku config:set SENDGRID_USERNAME=設定したいUSER_NAME〇〇〇

を実行。以下の実行結果が表示される。

Setting SENDGRID_USERNAME and restarting ⬢ morning-forest-74192... done, v19

SENDGRID_USERNAME: app108355452@heroku.com

パスワードは設定されている

$ heroku config:get SENDGRID_PASSWORD

e0e5lqgk8035

その後、

git add -A

git commit -m

git push

git push heroku

を行う。

再度herokuからアプリ立ち上げ。

10分メールを使って、再度本番環境から新規登録。

https://10minutemail.net/

すると新規登録が出来た。

トップページへリダイレクトされ、アカウントを有効化しろとのメッセージが表示される。

10分メールのメールBOXをチェックすると、有効化メールが来ていた。

本文のactiveをクリックしたら、ページへ飛んで有効化出来ました。

【反省と学び】

何か変更したら、git addとgit commitを行う。加えた変更が適用されないため。

エラーになって色々修正していると、正しく設定出来ていたことに誤った変更を加えてしまっている可能性もあるので、落ち着いて見直していく。