Friday 30 December 2011

Ruby on Rails

Database の授業も一通りやったので(採点がまだだが)、最後は Ruby on Rails やろうかと思ってます。

で、Mac OS X Lion に installするのだが、いつも通り一筋縄ではいかない。いったいなんでだよ?

default の ruby は 1.8.7で、それで

% gem install rails
とかすると、rack のdependency が解けないとかいうので、そこだけ、gem install rack をやってあげる。しかし、

% rails new ~/src/rails/app1

で、

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:230:in `activate': can't activate rack (~> 1.3.5, runtime) for ["actionpack-3.1.3", "rails-3.1.3"], already activated rack-1.4.0 for ["rack-cache-1.1", "actionpack-3.1.3", "rails-3.1.3"] (Gem::LoadError)

とかいう。どうも、rack が再帰的にactivateされるので文句言っているらしい。先のエラーとも関係するらしい。これは諦めた方が良さそうなので、ruby 1.9 でやることに。

epkg には、1.9.1p337 とかいうのがあるので、それを入れるのだが、そうすること今度は、gem intall rails で、

% gem が古い

あ、そうですか。そこで根性が尽きたが、昼飯食いながら、easy package の ruby のversionを 1.9.3 に上げることに。研究室OBがやってくれいたようだが、どうも、Makefile が少し変。

% make Document のmakeに時間が…
% make plist で、もう一度 compile する
% make install しようとすると、install なんてentryがない

確かに、ruby-1.9.3 directory の下は「まっさらなパッケージ」。make plist で make distclean しているせいらしい。make にはかなりの時間がかかるのだが、心で泣きながら、もう一度 make 。三回目だよな、これ。

で、make の途中で、YAMLがなんとかとかいうメッセージを見かけたので libyaml もついでに epkg へ。そして、また、やり直し。おぃ〜

これで、ruby-1.9.3 は epkg に入った。えーと、何やってたんだっけ。そうそう、gem install rails ね。今度は順調に終わる。が、

% rails new ~/src/rails/app1

で、

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Try 'port install sqlite3 +universal'

お前な〜 これは一体なんだろう。もちろん、sqlite3 は入っている。library も /usr/lib なんで落ちるはずないんだが。いったい、どこの sqlite3 呼んでるんだ?

+leo+kono locate sqlite3.h
/usr/include/php/ext/sqlite3/libsqlite/sqlite3.h
/usr/include/sqlite3.h
/usr/local/include/sqlite3.h

わかりましたよ。2006年に入れた sqlite3 が悪さをしていたらしい。sqlite3 を読んだ時があったので、その時のかな。epkg かも。/usr/local な sqlite3 を消して、ようやっと通りましたよ。

ここまでで二時間二十分もかかってるし。

local でやるか、herok でやるかは迷うところだが、まぁ、両方かな。

No comments: