[Rails] 久々のRials

お仕事で必要になった、凄く簡単なWebアプリを Rails で作りました。
久しぶりだったので 1テーブル・実質1ページのアプリなのに5時間もかかってしまいました ^^;
たぶん殆どの時間は、何度ものテーブル設計のやり直し、サーバーへのgem,rails,mongrel,mod_proxyのインストールではまる、Effects.js で遊んだ ^^; 時間です。

学んだ事:

validates_presence_of の条件指定

ある条件が成り立っている時だけバリデーションする場合 :if で条件指定メソッドを指定しますが、 簡単な場合、Proc を使ってそこに書くこともできます。

  validates_presence_of :comment, :if => Proc.new {|q| q.quality == 'C'}

Proc クラスは初めて使いました。Procは無名関数の様なものです (厳密には関数とは違います → http://www.ruby-lang.org/ja/man/?cmd=view;name=Proc)

エラーメッセージに出るカラム名を日本語化する

WEB+DB Press Vol.35 に出ていた ActiveHeart (http://jp.rubyist.net/magazine/?0012-RubyOnRails) を使ってみました。シンプルです ^^)

PotsgreSQL でナゾのエラー

DB,テーブルを準備してRadRailsで scaffold を実行したところ Bad file descriptor - connect(2) が発生! 設定やテーブルを穴の開くほど見直したのですが、問題が発見できなかったので。も一度 DOSプロンプトから ruby script/scaffold で実行するとナゼか成功 ???

サーバーへの Gem インストールで Ruby core dump ^^;

もう夜も更けてきての core dump に汗;; そういえば Tomcat(java)が動いていた事を思い出し。tomcatを止めてインストールしたところ無事完了! 借りてるサーバーは VPS でメモリー制限があるのでした。

mongrel インストール

以前、fastCGIでメゲてしまったので、今回は mongrel にしました。ここを参考にインストールしたらあっけなく成功。 簡単、サーバーとしても立ち上がり Good です!

mongrel の設定ですが、以下のよな感じですで設定ファイルを作りました

mongrel_rails start -e production -d -p 3000 --prefix /hoge

またコマンドラインでは指定できないようですが、 host を 127.0.0.1 に設定して 外部から 3000番ポートを受け付けない様にできます。

mod_proxy の設定

先ほどの ページ にあるように mod_proxy_balancer にするのがカッコ良さそうでしたが、ほとんどアクセスの無いアプリなので、とりあえず mod_proxy で済ませました。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass /mongrel http://localhost:3000/mongrel
ProxyPassReverse /mongrel http://localhost:3000/mongrel