一週間のカリキュラム 1週間で、Ruby 〜 Ruby on Railsまでを学ぶ
シリーズの5日目、Herokuと他のサービスとの連携を追っていきます。。
5日目
- サービスのデプロイ
1 Herokuと他のサービスとの連携
前回、postgresをherokuにaddonsとして追加しました。 herokuにはこれ以外にもaddonsがあります。
2 Herokuのサービスにクレジットカードかデビットカードを登録しておく
メール系のアドオンを追加していくにはherokuにカード情報を登録しておく必要があります。 カードは登録されても、herokuのプランを上げたりしない限りは課金される事はありません。 ※アプリの「バンドルカード」などでも利用可能です。
3 現状は今の設定では、メールが送れない
テスト環境ではgmailでsmtpを利用したメール送信をしました。 > config/environments/development.rb
heroku上でもプロダクション部分にgmailの記載をしても良いですが、 > config/environments/production.rb
せっかくなので、addonesを利用してメールを送信する準備を整えます。
※ これらを利用する理由は将来メールの大量送信などメールマーケティングなをを行う場合に gmailは2022年の時点では1日500通という制限があるため、大きいサービスを展開できなくなるからです。
無料でも使えるプランがあるメールサービス
sendgrid mailgun mailtrap ※テスト用 CloudMailin・・・
※ これらのプランも無料段階では1ヶ月あたりのメール送信数に制限はありますが、サービス拡大と共に有料プランへの切り替えが可能です。
※ 時間あたりの送信制限もありますので、そちらもサービス毎に確認は必要です。
3−1 sendgrid
- sendgrid登録までは時間がかかる。
登録からメール発行まで、ある程度時間はかかりますが、日本の代理店である構造計画研究所経由から登録した方が良いでしょう。 sendgridは利用者や知見も多いためオススメです。
sendgridの登録が終わるまでに次に紹介する、mailtrapでテストを行うのも良いでしょう。
- 登録完了後
2FAログインというログイン毎にTELにSMSメッセージが送られくるか、アプリを登録しておくかの選択肢を選べるので、とりあえずSMSメッセージを送ってくる方を選んでおきます。
- Segging > API KEYから Create API Keyで API KEYを発行します。
とりあえずフルアクセスでAPIキーを作成し、表示されたAPIキーをコピーします。※後で参照できないので、必ずコピーして保管してください。
取得したAPIキーを環境変数としてセットします。
$ heroku config:set SENDGRID_API_KEY=xxxx_api_key_xxxx -a アプリ名
管理画面から直接設定してもかまいません。
管理画面のResourceでaddonsを追加します。
heroku addons:create sendgrid:starter
config.action_mailer.default_url_options = { host: 'アプリのホスト名' }
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
enable_starttls_auto: true,
address: 'smtp.sendgrid.net',
port: 587,
domain: 'test.jp',
user_name: 'apikey',
password: ENV['SENDGRID_API_KEY>'],
authentication: 'login'
}
3−2 mailtrap
とりあえず登録されるまでにmailtrapというテストツールを利用しましょう。 登録後、すぐに開始できます。
管理画面から発行した、ソースコードをそのまま貼り付けて利用できるのも魅力です。
# メールのResister用にherokuアプリのホスト名をセットする。
config.action_mailer.default_url_options = { host: アプリのホスト名 }
# こちらはmailtrapで作成される物
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:user_name => '****',
:password => ''****',',
:address => 'smtp.mailtrap.io',
:domain => 'smtp.mailtrap.io',
:port => '2525',
:authentication => :cram_md5
}
mailtrapは開発用なので、どのメールで登録してもmailtrap自体にメールが送られる事になります。 heroku上のアプリから試しに登録してみましょう。 mailtrapで受信できてる事が確認できるはずです。