devise使ったメモ

ログイン機能を簡単に作ってくれるgem。
authlogicとか他にも認証系のgemはあったけど、資料が多そうなdeviseを使ってみた。
行った手順のメモです。

環境

devise (2.1.2)
Rails 3.2.6
ruby-1.9.3-p194

使ったコマンド

インストール
rails generate devise:install

これでinitialize配下にdevise設定ファイルができる。

テンプレートのgenerator
$rails generate devise:views
      invoke  Devise::Generators::SharedViewsGenerator
      create    app/views/devise/shared
      create    app/views/devise/shared/_links.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/reset_password_instructions.html.erb
      create    app/views/devise/mailer/unlock_instructions.html.erb

フォームのテンプレートだとか生成してくれる。
詳しくはまだ見ていない。

モデルのgenerator
$rails generate devise user
      invoke  active_record
      create    db/migrate/20121202134533_devise_create_users.rb
      create    app/models/user.rb
      invoke    rspec
      create      spec/models/user_spec.rb
      invoke      factory_girl
      create        spec/factories/users.rb
      insert    app/models/user.rb
       route  devise_for :users

マイグレーションファイルを作ってくれる。

フォームへのリンク貼る

トップページとか認証へのリンクを貼りたいテンプレートに以下をペースト

<% if user_signed_in? %>
  <%= link_to "ログアウト", destroy_user_session_path, :method => 'delete' %>
  <%= link_to "ユーザ情報の編集", edit_user_registration_path %>
<% else %>
  <%= link_to "ログイン", new_user_session_path %>
  <%= link_to "登録", new_user_registration_path %>
<% end %>

メッセージの表示

ログインしましただとかのメッセージを表示したい時はlayoutに以下をペースト

<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>

メールドメイン設定

  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:3000' }

productionで動かす時は別途設定が必要。
ここ、注意ですね。specは通るのにproductionではうまくいかないとかありそう。
詳しくはあとで調べる。

日本語化

デフォルトだと英語の辞書ファイルしかついこないが、
翻訳してくれた方がいるのでありがたく拝借。

https://raw.github.com/gist/606476/15605bdbc28067c7983cefae3ae12105ee93c243/devise.ja.yml

application.rbの言語設定を:jaにすることも忘れず。

メールでのアクティビティ

devise1系だと上記の生成した状態では、メールでのアクティビティがデフォルトだったようだけど、
現在使っている2系では、メールでのアクティビティはオプションとなっている。

メールでのアクティビティを実装するには以下を参照。
http://atotok.net/note/rails/?Devise%A4%CE%A5%E6%A1%BC%A5%B6%A1%BC%C5%D0%CF%BF%A4%C7%B3%CE%C7%A7%A5%E1%A1%BC%A5%EB%A4%F2%C1%F7%BF%AE

以上。