Railsにdeviseをインストールしてセットアップする

FBCRailsdevise gemを使ったプラクティスに入りました。 devise gemのインストールとセットアップについて調べました。 追加設定は基本的には行わず、動作確認が行える最低限のdeviseの機能が使える状態を目標にしました。

devise gemを追加するアプリケーション

devise gemを追加するアプリのリポジトリは以下です。

  • scaffoldで作成している
  • 既存モデルはBookモデルのみ

karlley/fjord-books_app at 04-user_page

最終的には認証機能付きのUserモデルを追加し、認証周りの機能を追加していきます。

devise gemのインストール

Gemfileへ追記してbundler経由でインストールします。

heartcombo/devise: Flexible authentication solution for Rails with Warden.

# Gemfile

gem 'devise'
$ bundle install

devise gemのセットアップ

下記コマンドでdeviseのセットアップを行います。

  • deviseの初期設定
  • devise用翻訳ファイルの追加
$ rails generate devise:install
Running via Spring preloader in process 62404
      create  config/initializers/devise.rb
      create  config/locales/devise.en.yml
===============================================================================

Depending on your application's configuration some manual setup may be required:

  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.

     * Required for all applications. *

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

       root to: "home#index"

     * Not required for API-only Applications *

  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>

     * Not required for API-only Applications *

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

       rails g devise:views

     * Not required *

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

rails generate devise:install コマンド実行後に表示されるメッセージの内容は次の4つです。

  1. メール認証時に使用するURL設定
  2. ログイン後にリダイレクトするルート設定
  3. フラッシュメッセージの表示タグの追加
  4. rails g devise:views コマンドでviewファイルの作成

上記4点は必要な部分だけ実行すればokです。 今回は3. フラッシュメッセージの表示タグの追加 のみ行います。

フラッシュメッセージの表示タグ追加

全viewファイルで読み込まれるapp/views/layouts/application.html.erb にフラッシュメッセージを表示タグを追加します。

# app/views/layouts/application.html.erb

<!DOCTYPE html>
...
<body>
  # 下記2行を追加
  <p class="notice"><%= notice %></p>
  <p class="alert"><%= alert %></p>
  <%= yield %>
</body>
...

共通のviewであるapp/views/layouts/application.html.erb にタグを追加したので不要な<%= notice %><%= alert %> タグを各viewファイルから削除します。 今回の場合は下記の2つのファイル内の記述を削除します。

  • app/views/books/show.html.erb
  • app/views/books/index.html.erb
# app/views/books/show.html.erb

# 下記を削除
<p id="notice"><%= notice %></p>
# app/views/books/index.html.erb

# 下記を削除
<p id="notice"><%= notice %></p>

これで全ページでフラッシュが表示されるようになりました。

以上でインストールと最低限のセットアップは完了です。

まとめ

deviseはネット上の情報が多すぎるのでしっかり公式で確認しながら進めました。 今後も1次情報で情報の信憑性を確認する癖付けをしていこうと思います。

次は実際に認証機能付きのUserモデルを追加し、ログイン機能を実装します。

参照

heartcombo/devise: Flexible authentication solution for Rails with Warden.