2011年9月29日

UbuntuでRails3.1

Rails3.1をCapistranoでデプロイしようとして、けっこうはまった。
そもそも、3.0時代にデプロイしておけばよかったのだが、どうせデプロイするなら、環境も最新にした方が、後でめんどうがないだろうとRailsをこの際アップデートしておいた。
みんなも大好きなRailsCastsを見ながら、一時停止を繰り返しながら、AsciiCastsの方からコピペして、設定していく。
ほんとは、AsciiCastsだけでじゅうぶんなんだけど、そこはまあ、ライブ感があって楽しいので、ビデオを見ながらやっていく。

さて、いろいろやって、cap deploy:updateまでこぎつけた。
ここで出る、javascriptのランタイムがないというエラーは、こちらをはじめとして、あちこちで報告されている。
で、Gemfileに以下を追記。
gem 'execjs'
gem 'therubyracer'


これで動くかと思えば、そうでもない、と。
どういう環境だと、これで解決するのかな。
うちは、Ubuntu10.10なんですが、うまく動きません。

なるほど、ランタイムがないのか。therubyracerは違うの?と思いつつnode.jsを入れようと思い立つ。
とりあえず、適当にやってみる。
apt-get install node


これだと、
axconfig: port 1 not active

こんなエラーが出る。
なんでやねん!

こちらでは、「それは、node.jsではなく、nodeをインストールしたからだ。ずぼらせずに、gitでとってきてコンパイル・インストールしろ。」と書かれている。
どうやら、nodeというパッケージは全然関係ないみたい。


git clone https://github.com/joyent/node.git
cd node && ./configure && make
make test
make install

makeでエラーが出るけど、「無視されました」と出て、コンパイル成功。
testでもエラーが出るけど、無視してインストール。
(いつか怖いことが起きそうな気がする)


ここで再びエラー。

今度は、currentがディレクトリなので削除できないよ!ってやつ。
そりゃあ、rm -fでは削除できないでしょ?
勝手にディレクトリ作って、削除できないようもないけどなあ。。。
そういえば、このディレクトリ(current/public)は、apacheをちゃんと設定できているかのテストのために作成したものだった。

そこで、このディレクトリを削除すると、ついにデプロイが完了。

というわけで、もうちょっとしたら、アプリ、超αですが、リリースできそうです。

2011年9月28日

Rails3.1で開発中

以前から開発を進めていたツールの開発が、ようやく一段落した。
だいたい「自分では使える」ようになった感じ。
これから、他の人も使えるように、デザインをちゃんとしたり、操作の動線を考えたりする必要がある。

で、今日はherokuを設定してみたのだが、二点、はまった。

1.gemでpostgresqlを要求される。
 Gemfileに'pg'を追加したらエラーがなくなった

2.fakerがエラーを出す。
rake aborted!
no such file to load -- faker

こちらは、ちょうど同じことを聞いている人がいたので、このとおりに、sample_data.rakeからrequire'faker'を削除したら問題なくなった。

herokuはproduction環境だから、fakerなんて関係なのになって思うけど、なんでなんでしょうね。