deviseの導入

deviseとは

railsで作成したアプリケーションに簡単に認証機能(ログイン、ログアウト機能等)を実装できるgemのこと。

gemとは

Rubyのライブラリの一つである。 ライブラリとは、画像加工、フォロー機能、認証機能など便利な機能をまとめたもののことであり、 gemを用いることにより、多くの機能を一からコードを書くことなく、実装することができる。

gemの使い方は、Githubに公開されているリポジトリから、READMEで確認することができるものが多い。

deviseの実装

Gemfileへの記述

Railsアプリケーション作成時に自動生成される、Gemfileというファイルに、deviseを使用するために記述を行う。 Gemfileを開き、下記を最後の1行に追加する。

  gem 'devise'
bundle installの実行

bundle installは"Gemfile"に記述したgemをRailsアプリケーションで使用できるようにインストールするコマンドのこと。 "Gemfile"に記述するだけではgemはインストールされないため、gemを新しく追加した際は、bundle installを実行すること。

  $ bundle install
deviseのインストール

deviseでは、gemのインストール後、改めてインストールの実行が必要になるため注意する。

まず、deviseを使用するために必要なファイルを作成する。

$ rails g devise:install
deviseで認証するmodelの作成

下記のコマンドを実行してUserモデルを作成する。 deviseでは、独自のコマンドを使用するため注意する。

rails g devise User
作成されたmodelファイルの確認

上記のコマンドを実行すると、自動でapp/models/user.rbが生成される。 この中には、deviseで利用する機能が記述されている。

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
end

:database_authenticatable(パスワードの正確性を検証)

:registerable(ユーザ登録や編集、削除)

:recoverable(パスワードをリセット)

:rememberable(ログイン情報を保存)

:validatable(email のフォーマットなどのバリデーション)

作成されたmigrateファイルの確認

作成されたmigrateファイルを確認する。(db/migrateフォルダ内にあるファイル。) 今回作成するアプリケーションは新規登録時に名前、email、パスワードの登録が必要であるが、 デフォルトでは、名前を保存するカラムがないため、nameカラムを追加する。

t.string :name
データベースへマイグレーションの実行
$ rails db:migrate

確認のため、db/schema.rb内に、usersテーブルが作成されているか、nameカラムが実装されているか確認する。

ルーティングの確認

config/routes

Rails.application.routes.draw do
  devise_for :users
end

devise_for :usersが自動で記述されている。

deviseで使用するviewの準備

deviseではデフォルトで、viewを作成し、表示することができます。

このviewはdeviseの機能を使ってviewファイルを作成することで、上書きしてカスタマイズすることができます。

以下のコマンドを実行して、必要な View を Rails アプリケーションのディレクトリに用意します。

$ rails g devise:views

上記により、作成されたファイルを上書きすることで、deviseのviewを変更することが可能となる。

以上。

アプリケーションの作成 参考URL  作成するアプリケーションについて - takifugu’s blog