ユーザー認証機能を実装(2)
国際化対応用設定ファイルを確認
ジェネレーターコマンドで作成されたもう1つのファイルに、config/locales/devise.en.yml
があります。ユーザー認証に関わる機能を利用した際に表示されるflashメッセージも、deviseのデフォルトでは英語で表示されます。メッセージを日本語化するには、devise.ja.yml
ファイルを別途用意する必要があります。自前で用意しても良いのですが、メッセージを日本語化するためのgemであるdevise-i18nを使うとより簡単に日本語化できます。
ここでは、解説をdeviseの機能にフォーカスするため、デフォルトの英語のままで進めます。
ActionMailerの設定を追加
次に、ActionMailerのビューでURLを生成する際のデフォルト値を手順の通りに追記します。以下の設定はRailsの実行環境がdevelopmentモードのものなので、productionモードで動作させる場合は別途設定が必要となる点に注意が必要です。
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
ルーティングの追加
ここではdeviseが提示するルーティングの通り、トップページのルーティングを追記します。ログインしないとアクセスできない対象ページのルーティング定義が既にある場合は、この手順は省略しても問題ありません。
root to: 'home#index'
flashメッセージ用HTMLの追加
ユーザー登録等の際に表示されるflashメッセージのHTMLを追加します。ここではdeviseが提示する通り、全てのページに共通で表示する設定である共有レイアウトとして追加します。個別でflashメッセージを表示する場合は適宜修正してください。
…(中略)… <body> <p class="notice"><%= notice %></p> # 追記 <p class="alert"><%= alert %></p> # 追記 <%= yield %> </body> …(中略)…
ビューファイルの作成
deviseが提供するgenerateコマンドを使い、ユーザー登録等に対応するページ用のビューファイルを一括で作成します。
bin/rails g devise:views
Running via Spring preloader in process 21022 invoke Devise::Generators::SharedViewsGenerator create app/views/devise/shared 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
deviseはRails enginesを採用しているため、対応するビューファイルはデフォルトでapp/views/devise/ディレクトリに全て作成されることに注目してください。
まとめ
ここまで、Railsアプリ開発におけるRubyGemsの役割を確認すると共に、deviseが提供する基本的な機能について、概要を理解し、実際にdeviseが提供するコマンドを使用してdeviseの導入を開始しました。
次回は、deviseを用いることで、Railsチュートリアルなどの実装に比べて、ほとんどプロダクトのコードを記述することなくユーザー認証機能を追加できることを体験していきます。