はじめに
今回は、Rails7でサンプルアプリケーションのログイン機能をDeviseを用いて作成していきます。
前回に続きDockerを使用した環境で進めていきます。
プロジェクトとトップページの作成は、以下で実施していますので、ご参考ください。
Devise
本当は、OAuthやFireBaseAuthなどを使用したいところですが、まずはサンプルアプリケーションの構築を進めたいので、実装だけなら簡単なDeviseを使用していきます。
GitHub - heartcombo/devise: Flexible authentication solution for Rails with Warden.
Flexible authentication solution for Rails with Warden. - heartcombo/devise
流れ
- Gemfileにdeviseを追加
- Userモデルを作成
- Usersのテーブルを作成
- 稼働確認
Gemfileにdeviseを追加
Gemfileにdeviseを追加します。
gem 'devise'
Gemfileを反映させます。
% docker exec -it myapp-web bundle install
% docker exec -it myapp-web rails generate devise:install
create config/initializers/devise.rb
create config/locales/devise.en.yml
Gemfileを更新したらサーバーは再起動させておきましょう。
サーバーを起動させていたもう一方のターミナルでCtrl+C
で停止して、再度以下のコマンドを実行します。
% docker compose up
Deviseのビューを反映
Deviseのビューをアプリケーションに反映します。
% docker exec -it myapp-web rails g devise:views
invoke Devise::Generators::SharedViewsGenerator
create app/views/devise/shared
create app/views/devise/shared/_error_messages.html.erb
create app/views/devise/shared/_links.html.erb
invoke form_for
create app/views/devise/confirmations
create app/views/devise/confirmations/new.html.erb
create app/views/devise/passwords
create app/views/devise/passwords/edit.html.erb
create app/views/devise/passwords/new.html.erb
create app/views/devise/registrations
create app/views/devise/registrations/edit.html.erb
create app/views/devise/registrations/new.html.erb
create app/views/devise/sessions
create app/views/devise/sessions/new.html.erb
create app/views/devise/unlocks
create app/views/devise/unlocks/new.html.erb
invoke erb
create app/views/devise/mailer
create app/views/devise/mailer/confirmation_instructions.html.erb
create app/views/devise/mailer/email_changed.html.erb
create app/views/devise/mailer/password_change.html.erb
create app/views/devise/mailer/reset_password_instructions.html.erb
create app/views/devise/mailer/unlock_instructions.html.erb
Userモデルを作成
以下のコマンドでDevise用のUserのモデルを作成します。
routes.rbへ自動で追加されます。
% docker exec -it myapp-web rails g devise User
invoke active_record
create db/migrate/20241201142518_devise_create_users.rb
create app/models/user.rb
invoke test_unit
create test/models/user_test.rb
create test/fixtures/users.yml
insert app/models/user.rb
route devise_for :users
Usersのテーブルを作成
モデルを作成した際にマイグレーションファイルが作成されています。こちらをコマンドを用いて実行し、テーブルの作成やカラム追加を行っていきます。
% docker exec -it myapp-web rails db:migrate
== 20241201142518 DeviseCreateUsers: migrating ================================
-- create_table(:users)
-> 0.0042s
-- add_index(:users, :email, {:unique=>true})
-> 0.0007s
-- add_index(:users, :reset_password_token, {:unique=>true})
-> 0.0006s
== 20241201142518 DeviseCreateUsers: migrated (0.0055s) =======================
稼働確認
以下にアクセスするとサインアップ画面が確認できます。
http://localhost:3000/users/sign_up
以下にアクセスするとサインイン画面が確認できます。
http://localhost:3000/users/sign_in
まとめ
Deviseを使うと簡単にログイン画面が作成できました。
次回は、見た目を整えていきます!
最後までご覧いただきありがとうございました。
コメント