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
以上。