Rails 4 と Ruby 2.0 を使う (2)

Rails 4 と Ruby 2.0 を使う (1) の続き。

rspec

Gemfile に

gem "rspec-rails"

を追加する。

git add Gemfile
git commit -m "Add rspec-rails"
bundle update
git commit -m "Update Gemfile.lock"

rails generate rspec:install
git add .
git commit -m "rails generate rspec:install"

protected_attributes

rake routes

とするとエラーが出た。gem のどれかが rails 4 の Strong Parameters に対応していないようだ。 Gemfile に

gem "protected_attributes"

を追加してエラーが出ないようにする(これは rails 4 が普及したら、最終的には使用しないほうがよいはず)。

git add Gemfile
git commit -m "Add protected_attributes"
bundle update
git add Gemfile.lock
git commit -m "Update Gemfile.lock"

letter_opener

ユーザ登録時にメールを返信したいのだが、開発時に一々メールを確認するのは面倒。 letter_opener を使用する。Gemfile に

gem "letter_opener", :group => :development

を追加する。

git add Gemfile
git commit -m "Add letter_opener"
bundle update
git add Gemfile.lock
git commit -m "Update Gemfile.lock"

letter_opener の README.rdoc にあるように config/environments/development.rb に次を追加する。

config.action_mailer.delivery_method = :letter_opener

コミットしておく。

git add config/environments/development.rb
git commit -m "Setting of letter_opener"

devise の認証用のモデルとビューを作成

devise の認証用に User モデルを作成することにする。

rails generate devise User
git add .
git commit -m "rails generate devise User"

でモデルを作り

rake db:migrate RAILS_ENV=development
git add db/schema.rb
git commit -m "Update migration"

でデータベースのスキーマを設定する。

後で Admin クラスを作って、管理者ユーザと一般ユーザに分けるつもりなので ビューを作るときには次のようにする。

rails generate devise:views users

作成された app/views/users 以下を使用するように config/initializers/devise.rb の中で次のような修正をする。

config.scoped_views = true

これでコミットしておく。

git add .
git commit -m "rails generate devise:views users"

メールで確認をとるようにしたい。app/models/user.rb で

-  devise :database_authenticatable, :registerable,
+  devise :database_authenticatable, :registerable, :confirmable,

を変更する。また、データベースのスキーマを変更する。一度、データベースを削除することにして db/migrate 以下にある *_devise_create_users.rb を編集する。

-      # t.confirmable
+      t.confirmable

-    # add_index :users, :confirmation_token,   :unique => true
+    add_index :users, :confirmation_token,   :unique => true

の2か所を変更する。

git add app/models/user.rb
git add db/migrate/20130318234323_devise_create_users.rb
git commit -m "Setting of mail confirmation of devise"

データベースを作り直す。

rm db/development.sqlite3
rake db:migrate RAILS_ENV=development
git add db/schema.rb
git commit -m "Recreate db/schema.rb"

http://localhost:3000/users/sign_up にアクセスしてユーザを登録してみる。 確認のメールが letter_opener でブラウザに表示される。

erb2haml

erb ではなく haml を使いたいので、view の erb を haml に変換する。 erb2haml をインストールしても html2haml がインストールされないようなので Gemfile に

gem "html2haml", :group => :development
gem "erb2haml", :group => :development

を追加する。

git add Gemfile
git commit -m "Add erb2haml and html2haml"
bundle update
git add Gemfile.lock
git commit -m "Update Gemfile.lock"

erb を haml に変換する。

rake haml:convert_erbs

erb は削除されないので、すべての erb が不要な場合は

find app/views -name "*.erb" | xargs git rm

などとして削除する。

git add app/views
git commit -m "Convert erb to haml"

参考

Tags of current page

,