Rails 2.3.2のインストール

いままでUbuntuのapt-getで入ってたRailsを使ってたんだけども、普通gemから入れるようなので、そこからいれようとしたら、色々エラーが出たのでメモ。

apt-getでいれたRails(/usr/share/rails/以下)はなんかおかしい。rails -v使えないので、script/aboutでVersion確認してみると2.1.0。Vendor内にActiveRecordやらなにやらのシンボリックリンクが張られてる状態でアプリケーションが作成される。

とりあえずaptで入ってるRailsを削除。

$ sudo apt-get remove rails

現在の最新2.3.2がインストールされる。

$ sudo gem install rails

この状態だとrailsコマンドが使えなくなる。

$ rails
bash: /usr/bin/rails: No such file or directory

gem経由でインストールしたbinは/var/lib/gems/1.8/binに入っているので、Pathを通す。

$ vi .bashrc
$ source .bashrc

export PATH=/var/lib/gems/1.8/bin:$PATHを.bashrcに書き加えて、再読み込み。

$ rails -v
Rails 2.3.2

最新版になった。

$ rails testapp -d mysql
$ script/about
Rails requires RubyGems >= 1.3.1 (you have 1.2.0). Please `gem update --system` and try again.

RubyGemsのバージョンが古いからアップデート。

$ sudo gem update --system
ERROR:  While executing gem ... (RuntimeError)
    gem update --system is disabled on Debian. RubyGems can be updated using the official Debian repositories by aptitude or apt-get.

DebianUbuntu)はapt-getを使えとエラーが出る。

$ sudo gem install rubygems-update
Successfully installed rubygems-update-1.3.1
1 gem installed
$ update_rubygems 
Installing RubyGems 1.3.1
mkdir -p /usr/local/lib/site_ruby/1.8
mkdir -p /usr/bin
install -c -m 0644 ubygems.rb /usr/local/lib/site_ruby/1.8/ubygems.rb
/usr/lib/ruby/1.8/fileutils.rb:1262:in `initialize': Permission denied - /usr/local/lib/site_ruby/1.8/ubygems.rb (Errno::EACCES)

sudoだとCommand not found言われるので、パスを直接指定。

$ sudo /var/lib/gems/1.8/bin/update_rubygems

Success

$ script/about
Missing the Rails 2.3.2 gem. Please `gem install -v=2.3.2 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.

さっき2.3.2いれたのに、Rubygemsのバージョンを1.2→1.3にした関係かな?

$ sudo gem install rails
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
5 gems installed
Installing ri documentation for activerecord-2.3.2...
Installing ri documentation for actionpack-2.3.2...
Installing ri documentation for actionmailer-2.3.2...
Installing ri documentation for activeresource-2.3.2...
Installing RDoc documentation for activerecord-2.3.2...
Installing RDoc documentation for actionpack-2.3.2...
Installing RDoc documentation for actionmailer-2.3.2...
Installing RDoc documentation for activeresource-2.3.2...

もう一度やり直したら、またインストールを始めた。

$ script/about
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
About your application's environment
Ruby version              1.8.7 (i486-linux)
RubyGems version          1.3.1
Rack version              1.0 bundled
Rails version             2.3.2

Mysqlドライバでエラー

$ sudo gem install mysql
Building native extensions.  This could take a while...
Successfully installed mysql-2.7
1 gem installed

(※こんなエラーが出る場合は)

$ sudo gem install mysql
Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
	ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb install mysql
extconf.rb:1:in `require': no such file to load -- mkmf (LoadError)
	from extconf.rb:1


Gem files will remain installed in /var/lib/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /var/lib/gems/1.8/gems/mysql-2.7/gem_make.out

$ sudo gem install ruby1.8-dev

ruby1.8-devが足りていない。

ここまでやってやっとscript/aboutでのバージョン確認ができた。

Webrickに戻っていたのでMongrelもいれなし。
script/serverで起動確認。

一応トップページだけではなく、ControllerやModel一通り動いてるか確認するためにScaffoldでも作ってみよう。

$ rake db:create
$ script/generate scaffold item name:string price:integer
$ rake db:migrate

http://localhost:3000/items/

動いてるみたい。