Ubuntu 8.04 (vmware) + rails 2.3.2

Ruby on Rails 2.3.2 を使える環境を作る手順。何度も同じ失敗をしたので、備忘録として書きます。

使用したのは Ubuntu 8.04 日本語リミックスの VMware 仮想マシン(VMware Player 2.5.1 on Windows XP)。

安易に 8.10 にアップグレードしたら open-vm-tools がおかしくなり、eth0 を認識しなくなったので、8.04 のまま使うことにしました。HGFS は使えないのですが、ホストOS(Windows XP)とのあいだでコピー&ペーストができるので便利です。

apt-get でインストールされる gem はバージョンが古いので、このままでは後の作業がうまく行きません。

/var/lib/gems/1.8/ にインストールされるのは古い gem の挙動、/usr/lib/ruby/gems/1.8/ にインストールされるのが新しい(望ましい?)gem の挙動のようです。

  • 2009-08-12 追記:Debian パッケージの gem をそのまま使うと /var/lib/gems 以下にインストールされる、ということらしいです。Ubuntu 9.04 の /usr/bin/gem1.8 (gem 1.3.1) においても /var/lib/gems に実行ファイルが生成されることを確認しました。
$ sudo apt-get install ruby rubygems
$ gem -v
0.9.4
$ which gem
/usr/bin/gem
  • 追記 (2009-05-20) Ubuntu 9.04 の rubygems1.8 はバージョン 1.3.1 でした。

手作業で gem 1.3.1 を入れる。

$ sudo gem install rubygems-update-1.3.1.gem
$ sudo /var/lib/gems/1.8/bin/update_rubygems
...
RubyGems installed the following executables:
/usr/bin/gem1.8
If `gem` was installed by a previous RubyGems installation, you may need
to remove it by hand.

古い /usr/bin/gem と新しい /usr/bin/gem1.8 が共存しているので、手作業で対応。

$ gem -v
/usr/bin/gem:10:Warning: Gem::manage_gems is deprecated and will be removed
on or after March 2009.
/usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)
$ gem1.8 -v
1.3.1
$ pushd /usr/bin; sudo mv gem gem.org ; sudo ln -s gem1.8 gem; popd
$ gem -v
1.3.1

gem 1.3.1 を使って rails を入れる。

$ sudo gem install rails
Successfully installed rake-0.8.4
Successfully installed activesupport-2.3.2
Successfully installed activerecord-2.3.2
Successfully installed actionpack-2.3.2
Successfully installed actionmailer-2.3.2
Successfully installed activeresource-2.3.2
Successfully installed rails-2.3.2
7 gems installed
...
$ rails -v
Rails 2.3.2

アプリケーション hoge を作って、sqlite3 で rake test を通す。

$ rails hoge
$ cd hoge
$ rake test
rake aborted!
no such file to load -- sqlite3

sqlite3 環境が足りないから rake test が通らない。下記サイトを参考に対処。

$ sudo apt-get install ruby1.8-dev swig libsqlite3-dev
$ sudo gem install sqlite3-ruby

migrate して test する。

$ rake db:migrate
(in /home/nishi/hoge)
$ rake test
(in /home/nishi/hoge)
/usr/bin/ruby1.8 -I"/home/nishi/hoge/lib" -I"/home/nishi/hoge/test"
"/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/rake_test_loader.rb"
/usr/bin/ruby1.8 -I"/home/nishi/hoge/lib" -I"/home/nishi/hoge/test"
"/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/rake_test_loader.rb"
/usr/bin/ruby1.8 -I"/home/nishi/hoge/lib" -I"/home/nishi/hoge/test"
"/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/rake_test_loader.rb"

test が通ったので、server を動かしてブラウザから確認する。

$ script/server
Welcome aboard
You're riding Ruby on Rails!
About your application's environment
Ruby version	        1.8.6 (i486-linux)
RubyGems version	1.3.1
Rack version	        1.0 bundled
Rails version	        2.3.2
Active Record version	2.3.2
Action Pack version	2.3.2
Active Resource version	2.3.2
Action Mailer version	2.3.2
Active Support version  2.3.2
Application root	/home/nishi/hoge
Environment	        development
Database adapter	sqlite3
Database schema version	0