Rails3 認証エンジン「devise」

こんにちは。Rails研究員の[twitter:@gc_locks]です
認証エンジンのdeviseが便利すぎて記事が書きたくなりました。
GitHub - plataformatec/devise: Flexible authentication solution for Rails with Warden.
特に、今回はTwitter認証をdeviseでやってみたいと思います。

まずは、普通に /Gemfile に

gem 'devise'

と書き、

$ bundle install

で、インストールしましょう。
ここで、後述のOauth認証をするためにバージョンは1.2以上である必要があります。
バージョンが低いときは

gem 'devise', '1.3.4'

のように指定しましょう。

そして、

$ rails g devise:install

で環境の構築は終了です。

すると、以降から generator に devise という、認証機構がついた model が使えるようになり

$ rails g devise (モデル名)

で呼び出せます。

まずは、何も考えず SimpleUser というモデルを作ってみます。

$ rails g devise SimpleUser

ちょっと、routes を確認してみます。

$ rake routes
        new_simple_user_session GET    /simple_users/sign_in(.:format)       {:action=>"new", :controller=>"devise/sessions"}
            simple_user_session POST   /simple_users/sign_in(.:format)       {:action=>"create", :controller=>"devise/sessions"}
    destroy_simple_user_session GET    /simple_users/sign_out(.:format)      {:action=>"destroy", :controller=>"devise/sessions"}
           simple_user_password POST   /simple_users/password(.:format)      {:action=>"create", :controller=>"devise/passwords"}
       new_simple_user_password GET    /simple_users/password/new(.:format)  {:action=>"new", :controller=>"devise/passwords"}
      edit_simple_user_password GET    /simple_users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
                                PUT    /simple_users/password(.:format)      {:action=>"update", :controller=>"devise/passwords"}
cancel_simple_user_registration GET    /simple_users/cancel(.:format)        {:action=>"cancel", :controller=>"devise/registrations"}
       simple_user_registration POST   /simple_users(.:format)               {:action=>"create", :controller=>"devise/registrations"}
   new_simple_user_registration GET    /simple_users/sign_up(.:format)       {:action=>"new", :controller=>"devise/registrations"}
  edit_simple_user_registration GET    /simple_users/edit(.:format)          {:action=>"edit", :controller=>"devise/registrations"}
                                PUT    /simple_users(.:format)               {:action=>"update", :controller=>"devise/registrations"}
                                DELETE /simple_users(.:format)               {:action=>"destroy", :controller=>"devise/registrations"}

デフォルトでたくさん routes が出来ています。
早速、migrate して、サーバを立てましょう。

$ rake db:migrate
$ rails s

上述の routes の http://localhost:3000/simple_users/sign_in にアクセスしてみましょう。




ね、簡単でしょ?

文言などを変えたいときは、

$ rails g devise:views

でテンプレートを生成して、 /app/view/devise を書き換えましょう。

今回ここまで次回はTwitter認証にdeviseを用いてみます。
gcでした。

【次回】Rails3 deviseによるtwitter認証 - スマートフォンアプリ開発会社のエンジニアブログ