FBCのRailsでdevise 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つです。
- メール認証時に使用するURL設定
- ログイン後にリダイレクトするルート設定
- フラッシュメッセージの表示タグの追加
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.