S6x(Six) Auth Scaffold Generator¶ ↑
Sorry, Japanese only.
「S6x(Six) Auth Scaffold Generator」(以下、s6x_auth_scaffold)はRails 3.0向けのシンプルな認証機能をフルスクラッチで記述するためのgeneratorです。s6x_auth_scaffoldの目的はこれからRuby on Railsで開発する方がRailsにおける認証の概要をソースコードレベルで理解することを手助けすることです。
s6x_auth_scaffoldは以下の機能を実現するソースコードを自動生成します。
-
ログイン画面(/login)でログインIDとパスワードで認証。
-
ユーザのモデル名はUserやEmployeeなど自由に指定できる。
-
ログイン後はWelcome画面(root_url)を表示。
-
Welcome画面のURLを指定できる。
-
-
/logoutにアクセスするとログアウトできる。
-
ログアウトするとログイン画面を表示。
-
このときログアウトした旨を表示。
-
ただし、なるべく簡単に理解できるようなソースコードを自動生成するために以下の制限があります。
-
ユーザの作成はWebではできない。
s6x_auth_scaffoldで基本を学んだ後は自動生成された認証機能をカスタマイズしてもよいですが、ぜひDevise、AuthLogicなどの認証ライブラリの導入を検討してみてください。
-
Devise: github.com/plataformatec/devise
-
AuthLogic: github.com/binarylogic/authlogic
ライセンス¶ ↑
MITライセンス
必要なソフトウェア¶ ↑
-
Ruby 1.9.2-p290以降
-
Ruby on Rails 3.0.10 (3.1以降では動作確認をしていない)
インストール方法¶ ↑
gem install s6x_auth_scaffold_generator
使用方法¶ ↑
新しいRailsプロジェクトを作成してデータベースの設定などを行います。
$ rails new auth_demo $ cd auth_demo (Gemfileに以下を追加) gem 's6x_auth_scaffold_generator' $ bundle install (DBの設定など) $ rake db:create:all
s6x_auth_scaffoldで認証まわりのソースコードを自動生成します。
$ rails generate s6x_auth_scaffold User
rake db:migrateを実行してusersテーブルを作成します。
$ rake db:migrate
ついでに単体テストも実行します。
$ rake
動作確認をするためにユーザを作成します。ここではログインIDがadmin、パスワードがadminのユーザを作成しています。
$ rails console > User.create!(login: "admin", password: "admin") > quit
サーバを起動して動作を確認します。/loginにアクセスしてログインします。「Welcome aboard」が表示されればs6x_auth_scaffoldがただしく動作しています。
$ rails server (Webブラウザでlocalhost:3000/loginにアクセスする)
サーバを停止させます。
これからやってほしいこと¶ ↑
自動再生されたファイルや変更されたファイルを確認してください。ソースコードの量が少ないので安心してください。認証に最低限必要な機能が実装されています。
また、単体テストも記述してあるため、今後の開発の参考になるはずです。
一通り確認できたらWelcome画面(Welcome#index)を作成してみてください。Welcome画面にはログアウトのボタンやログインIDを表示してみてください。このとき、RAILS_ROOT/public/index.htmlを削除することを忘れないでください。
<p><%= current_user.login %> <%= link_to "ログアウト", logout_path %></p>
最後に氏名(name)、ふりがな(furigana)、メールアドレス(email)などのユーザの情報をUserモデルに追加してアプリケーションの要件を満たすように改良してみてください。