devise使ったメモ
ログイン機能を簡単に作ってくれるgem。
authlogicとか他にも認証系のgemはあったけど、資料が多そうなdeviseを使ってみた。
行った手順のメモです。
使ったコマンド
インストール
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
以上。