Ruby on Rails 3.0.0から3.0.5へのアップグレード

環境

準備

まずは、パッケージをまとめて最新状態にする。

% sudo aptitude update
% sudo aptitude safe-upgrade
% ruby -v
ruby 1.8.7 (2011-02-18 patchlevel 334) [i486-linux]

Ruby gemのアップグレード

% sudo gem1.8 update --system
% gem1.8 -v
1.6.2

Ruby on Railsのアップグレード

% sudo gem1.8 update rails
% rails -v
Rails 3.0.5

bundlerが自動でアップデートされないので個別にアップデート。

% sudo gem1.8 update bundler

公開環境のpassengerアップグレード

passengerをアップデート。

% sudo aptitude install libcurl4-openssl-dev
% sudo gem1.8 update passenger
Phusion Passenger version 3.0.5

"Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.

モジュール生成

% sudo passenger-install-apache2-module

バージョン情報を整える。/etc/apache2/mods-available/passenger.loadのpassengeのバージョン番号を修正。

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.5/ext/apache2/mod_passenger.so

/etc/apache2/mods-available/passenger.confの中身のバージョン番号を修正。

PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.5
PassengerRuby /usr/bin/ruby1.8

apacheを再起動する。

% sudo /etc/init.d/apache2 restart

gemモジュールのアップデート

% sudo gem1.8 update devise
% sudo gem1.8 update pg

既存のプロジェクトのアップデート

% cd app_30
% rake rails:update

以下のファイルが書き換えられるので注意。

  • config/boot.rb
  • config/routes.rb
  • config/application.rb
  • config/environments/development.rb
  • config/environments/production.rb
  • config/environments/test.rb
  • config/initializers/secret_token.rb
  • config/initializers/session_store.rb
  • config/locales/en.yml
% bundle install --local --without=production (開発環境)
% bundle install --local --without=development (公開環境)

devise 1.1.6 から 1.2.1へ

何もかえないで動かすと以下のメッセージがログに表示される。

To update your app, please:
1) Remove config.encryptor from your initializer;
2) Add t.encryptable to your old migrations;
3) [Optional] Remove password_salt in a new recent migration. Bcrypt does not require it anymore.

なので、db/migrate/xxxx_devise_create_users.rb に t.encryptable を追加する。その後、config/initializers/devise.rbとconfig/locales/devise.en.ymlの複製をとり、config/initializers/devise.rbの更新を行う。

% cp -p config/initializers/devise.rb config/initializers/devise.rb.org
% cp -p config/locales/devise.en.yml config/locales/devise.en.yml.org
% rails generate devise:install

一応、db/schema.rbのコピーをとってから、データベースの再構成をする。

% cp -p db/schema.rb db/schema.rb.org
% rake db:migrate:reset
% diff db/schema.rb.org db/schema.rb
137d136
<     t.string   "password_salt",                       :default => "",   :null => false
139d137
<     t.string   "remember_token"
151a150
>     t.string   "password_salt"

remember_tokenが無くなった様子。password_saltの設定が変わったみたい。