LoginSignup
0
0

More than 3 years have passed since last update.

Railsでgem 'devise'を練習した話

Posted at

1.何をしたの?

Railsを勉強している最中、ログイン機能に便利なdevise gemに出会ったので、練習がてら2段階認証が必要な簡単なログインアプリを作成することにしました。
作成したアプリはこちらです
https://github.com/yosnak13/Login_APP

devise gemの使い方はこちらの方の記事がとても参考になりました!
https://qiita.com/cigalecigales/items/f4274088f20832252374

2.なぜそうしようと思ったのか。

自作アプリで動くメイラーを実装できないものか悩んでいたためです。

著者はrailsチュートリアルからrailsを学び、ログイン機能とメイラーの実装方法は学習しました。当時(2020年6月ごろ)チュートリアルでは、SendGridと呼ばれるherokuのアドオンを使用してメイラーを実装するようテキストに書かれていました。しかし、実際にアドオンを実行しようと思ってもメイラーが機能せず、アカウント有効化できないかSendGrid社に問い合わせたところ、「お客様が当社のプラットフォームに適していないと判断したため、アカウントを有効化することができません。」と返事がありました。SendGridアドオンは明確な商用目的がないと使用できないようです。

仕方ありません!アカウントを有効化するにあたり5つ質問に答えて欲しいと指示があったのですが、質問内容かなりガチでした(笑)。英語でのやりとりでしたがいい経験になりました。
現在RailsチュートリアルはMailgunというアドオンを使用するようにテキストが変わっていますが、そちらはどうなのかはまだチェックできておりません!

3.やったことを羅列

備忘録を兼ねて実行したことを羅列します

1.rails new LOGIN_APPでアプリ立ち上げ
2.devise gemのインストール
3.rails g devise UserでUserモデル作成
4.db/migrate/XXXXXXXXXXXXXX_devise_create_users.rbに'name'カラムを追加(emailカラムはモデル作成時すでに存在している仕様らしく、今回は'name'のみです)してmigrate
5.rails g devise:views usersでdeviseが管理するビューを作成・編集
6.rails g devise:controllers usersでdeviseが管理するコントローラーを作成・編集
7.route設定
8.ログインページ、パスワード再設定ページ、アカウント作成ページを編集
スクリーンショット 2021-01-23 16.42.25.png
今回CSSなしなのでデザインはもうシンプルにこんな感じです。

9.gmailを使ってメイラーを設定
10.アカウント作成後のリダイレクト先の作成、設定(route, controller, view)
11.ログイン後のリダイレクト先を作成、設定(route, conttoller, view)
スクリーンショット 2021-01-23 16.43.21.png
これで完成です!!ログインしたらログインおめでとうの文字が現れます(笑)

大まかに分けるとこの11工程になりました。

4.メイラーについて

今回はアドオンではなく習ったばかりのgmailのサービスを使用しました。
やり方は1で紹介した記事ほぼ同じやり方してます。
ただそのままgithubにプッシュすると個人情報ばればれなので、dotenv-gemを使って定義した環境変数から呼び出す形式にし、環境変数はgitignoreに記載することで回避しています。
スクリーンショット 2021-01-23 16.47.55.png

開発環境では無事メールが飛んでくれました。以前のチュートリアルの時は飛ばなかったので少し進歩です(笑)
これでrailsチュートリアルの時に抱えていたモヤモヤがすっきりしました!
次回からログイン機構を搭載するなどメールが必要なときはこの方法を使っていこうと思います。

5.deviseの他の機能

deviseには10個のモジュールが搭載されていて、
今回は、ユーザーの作成、編集、削除ができる'Registerable',メールで2段階認証が搭載できる'Confirmable'を使いました。
他の機能は作るアプリによって使うかどうかというところですが、機会があれば使ってみたいですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0