2013年1月19日土曜日

railsでDeviseを入れる

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

今日はココまで。



0 件のコメント:

コメントを投稿