SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

これだけは押さえておきたい! Rails開発で使えるgemパッケージ/ツール

Railsでユーザー認証機能を実装しよう~定番のgem「devise」活用法(1)

これだけは押さえておきたい! Rails開発で使えるgemパッケージ/ツール 第1回


  • X ポスト
  • このエントリーをはてなブックマークに追加

ユーザー認証機能を実装(2)

国際化対応用設定ファイルを確認

 ジェネレーターコマンドで作成されたもう1つのファイルに、config/locales/devise.en.ymlがあります。ユーザー認証に関わる機能を利用した際に表示されるflashメッセージも、deviseのデフォルトでは英語で表示されます。メッセージを日本語化するには、devise.ja.ymlファイルを別途用意する必要があります。自前で用意しても良いのですが、メッセージを日本語化するためのgemであるdevise-i18nを使うとより簡単に日本語化できます。

 ここでは、解説をdeviseの機能にフォーカスするため、デフォルトの英語のままで進めます。

ActionMailerの設定を追加

 次に、ActionMailerのビューでURLを生成する際のデフォルト値を手順の通りに追記します。以下の設定はRailsの実行環境がdevelopmentモードのものなので、productionモードで動作させる場合は別途設定が必要となる点に注意が必要です。

[リスト 2]config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

ルーティングの追加

 ここではdeviseが提示するルーティングの通り、トップページのルーティングを追記します。ログインしないとアクセスできない対象ページのルーティング定義が既にある場合は、この手順は省略しても問題ありません。

[リスト 3]config/routes.rb
root to: 'home#index'

flashメッセージ用HTMLの追加

 ユーザー登録等の際に表示されるflashメッセージのHTMLを追加します。ここではdeviseが提示する通り、全てのページに共通で表示する設定である共有レイアウトとして追加します。個別でflashメッセージを表示する場合は適宜修正してください。

[リスト 4]app/views/layouts/application.html.erb
…(中略)…
<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チュートリアルなどの実装に比べて、ほとんどプロダクトのコードを記述することなくユーザー認証機能を追加できることを体験していきます。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
これだけは押さえておきたい! Rails開発で使えるgemパッケージ/ツール連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 竹馬 力(チクバ ツトム)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10813 2018/05/15 17:59

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング