エンジニア転職日記

エンジニア転職に向けての日記です

How to devise(導入)

概要

Heroku, Basic認証に引き続きフリマアプリ作成において実装したdeviseもアウトプットしていきます。

 

shangang7321.hatenablog.com

 

 

shangang7321.hatenablog.com

 

deviseとは

deviseは、ユーザー認証機能を実装できるgemです。

deviseを利用すると、

・新規登録機能

・ログイン機能

・ログアウト機能

SNS認証機能

・メール認証機能

・アカウント編集機能

などが実装できます。今回はdeviseの導入とログイン、ログアウトの機能を実装していきます。

使い方

deviseのインストール

Gemfileを編集して、gemをインストールしていきます。

# Gemfile 一番下
gem 'devise'

 

bundle installを行います。

% bundle install

 

ここで、一旦ターミナルを再起動します。Gemを反映させるためです。

% rails s

 

ターミナルが再起動したら、deviseの設定ファイルをアプリケーションに作成します。

% rails g devise:install

 

以下のようなログが流れます。

      create  config/initializers/devise.rb
      create  config/locales/devise.en.yml
===============================================================================

Some setup you must do manually if you haven't yet:

  1. Ensure you have defined default url options in your environments files. Here
     is an example of default_url_options appropriate for a development environment
     in config/environments/development.rb:

       config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

     In production, :host should be set to the actual host of your application.

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root to: "home#index"

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>

  4. You can copy Devise views (for customization) to your app by running:

       rails g devise:views

===============================================================================

 

1〜4の英文は、deviseから開発者への指示、ヒントになっています。和訳は以下の通りです。

1. Ensure you have defined default url options in your environments files.

デフォルトのURL設定ができているか確認してください。

 

Here is an example of default_url_options appropriate for a development environment
in config/environments/development.rb:

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

開発環境であれば、デフォルトのURL設定はlocalhost:3000です。例をもとに設定してください。

 

In production, :host should be set to the actual host of your application.

本番環境では、自分でアプリケーションのホストURLを設定しなければなりません。

 

2. Ensure you have defined root_url to *something* in your config/routes.rb.
For example:

root to: "home#index"

ルーティングにルートURLが設定されていることを確かめてください。

 

3. Ensure you have flash messages in app/views/layouts/application.html.erb.
For example:

<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>

フラッシュメッセージをapplication.html.erbに記述しましょう。

変数は以下のようにnoticeやalertに格納されています。

 

4. You can copy Devise views (for customization) to your app by running:

rails g devise:views

rails g devise:viewsを実行するとビューファイルを作成することができますので、カスタマイズしてください。

 

Userモデルの作成

Userモデルを作成していきます。deviseでモデルを作成する場合はrails g deviseコマンドを使って作成します。

% rails g devise user

 

モデルと同時にマイグレーションファイルも作成されています。

また、ルーティングもdeviseの機能を使えるように自動で追記されています。

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

 

自動生成されたマイグレーションファイルを編集して、テーブルを作成します。

% rails db:migrate

 

以上で、簡易的なログイン機能の実装は完了です。

ただし、このままではデザインも味気なく、保存できるデータも限られるので、ビューやコントローラーを編集する必要があります。

今回は導入編なので、ここまでとします。

 

参考

 https://www.sejuku.net/blog/13378 

https://qiita.com/Pirori3182/items/afd1604cb0d206b2e3cc

https://pikawaka.com/rails/devise