Railsで認証機構をするいい感じのGemとしてDeviseがいるらしいのでそれを入れてみる。
今日やったこと
- gemのインストール
- devise機能のインストールと設定
- ビュー作成
- モデル作成
1. gemのインストール
RubyMineを使ってるのでQuickInstallで2.2.1をGemをインストールして、Gemifileに
gem 'devise'
って書いてbundle install した。
で後で2.2.2の方が最新なことに気づいたので入れ直しをした。
入れ直しする際のコンボは下記らしいので覚えておこう。
# {} 部分は置換
bundle uninstall {Gem名}
bundle install {Gem名} {Version番号}
bundle update
2. devise機能のインストールと設定
コマンドは
rails generate devise:install
そのログ(途中から)と必要に応じての翻訳は以下の感じ.
create config/initializers/devise.rb
create config/locales/devise.en.yml
===============================================================================
Some setup you must do manually if you haven't yet:
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:
environmentファイルのdefault url オプションを確認しましょう。
開発環境用の設定(config/encironments/development.rb)のサンプルは
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
とかになります。
In production, :host should be set to the actual host of your application.
本番環境では:hostには実際の値(実際のメールサーバ?)を指定しましょう。
2. Ensure you have defined root_url to *something* in your config/routes.rb.
root_url を設定していることを確認しましょう。
For example:
root :to => "home#index"
3. Ensure you have flash messages in app/views/layouts/application.html.erb.
For example:
application.html.erbでflashメッセージを設定していることを確認しましょう。
➡これ、デフォルトのapplicationテンプレート使ってない場合はそっちにかくんだろう。
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
4. If you are deploying Rails 3.1+ on Heroku, you may want to set:
Rails3.1以上でherokuにデプロイする場合は以下の設定をする必要があります。
config.assets.initialize_on_precompile = false
On config/application.rb forcing your application to not access the DB
or load models when precompiling your assets.
これでassets以下のプリコンパイル時にDBアクセスloadモデルしなくなります。
5. You can copy Devise views (for customization) to your app by running:
Deviseのviewを使う場合は
rails g devise:views
をやりましょう。
って書いてあったので、だいたい言われた通りにホイホイ書いておいた。
3. ビュー作成
多分deviseの標準の画面とかをつくってくれるのでしょう、と予測しつつ。
rail generate devise:view
を実行する。
ログは下記。
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
後で中身をのぞいてみよう。
4. モデル作成
deviseにマッチしたモデルを作成する。
ただし現状のuserモデルもいるのでまずは名前を変えて作ってみる。
というわけで
rails generate devise devise_user
を実行。(devise_user はモデル名)
invoke active_record
create db/migrate/20130119034259_devise_create_devise_users.rb
create app/models/devise_user.rb
invoke test_unit
create test/unit/devise_user_test.rb
create test/fixtures/devise_users.yml
insert app/models/devise_user.rb
route devise_for :devise_users
今日はココまで。