2012年4月11日水曜日

rails3でdeviseを使う。その1

ログイン画面を作るため、deviseを使うことにしました。
環境はこれまで通りruby1.9.2, rails3.0.10, sqlite3でやろうとしたのですが、ドキュメントを読むと、rails3.1以上にしてと記載されていました。

せっかくなので、railsの環境を最新にすることにする。

以下にメモ。

rubyを最新にする

利用予定のHerokuで、1.9.3-p0が利用できるようなのでこれを導入する。


rvm install ruby-1.9.3-p0

installが終了したら以下の手順を行います。


rvm list // installの確認

rvm use ruby-1.9.3-p0 // rubyを切り替える

rvm gemset create rails322 // gemsetを作成

rvm gemset list // 作成したgemsetがあることを確認する

rvm use 1.9.3-p0@rails322 // 作成したgemsetにする

gem install rails -v 3.2.2 // rails3.2.2をinstall

which rails // install場所を確認

rails -v // バージョンの確認

Rails 3.2.2 // ok

上記の作業を全て終えたら準備完了です。では、つづけてdeviseのinstallいきまっしょい。

devise install


gem install devise 

gem list // installの確認

devise (2.0.4)

さて、勉強用のアプリを作成します。test用のアプリを作成します。

rails new practice  // プロジェクト作成

適当に動作確認。次は、deviseをアプリで利用できるようにGemfileに追加。


vi Gemfile

gem 'devise'

これで準備OK。さあ、はじめようか!!

rails generate devise:install

実行すると、以下のメッセージが表示される。1-4までを手動で設定を行えとのことです。

$ 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:

       config.action_mailer.default_url_options = { :host => 'localhost:3000' }

     In production, :host should be set to the actual host of your application.

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root :to => "home#index"

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <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:

       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.

===============================================================================

上記はメモを残しておきます。Herokuにアップするとき、設定が必要みたいなので。

今回は開発環境だけなので、1-3を実施します。

設定が完了したら、モデルを作成します。

rails generate devise User

ファイルが作成されるので、コードをざっくりと目を通しておきます。よくわからないけど、OKw
DBを作成します。

rake db:migrate 

標準のviewを作成します。

rails generate devise:views 

app/views/devise以下に色々なファイルが生成されるのを確認します。rails serverでサーバーを立ち上げます。

http://localhost:3000/users/sign_inにアクセスすると、Sign inのページが表示されます。

これでOKと思いきや、カスタマイズ方法が全然わからん。
Readmeをあさっているとこんな表記かあった。

Starting with Rails?

If you are building your first Rails application, we recommend you to not use Devise. 
Devise requires a good understanding of the Rails Framework. 
In such cases, we advise you to start a simple authentication system from scratch, today we have two resources:

ざっくりいうと、rails初心者は、認証のシステムを一度最初から作って、仕組みを理解してから使え。とのこと

正論すぎますね。まったくその通り。
ということで今回のシステムではdeviseは使わずに、自分でスクラッチから作って利用することにします。

急がば回れ〜なのです。
んじゃ

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...