2007年12月27日木曜日

Railsよりお薦め!Rubyのフレームワーク Merb (Mongrel + Erb) をインストール

Merbに出会った。使ってみた。

Merb (Mongrel + Erb) は MVC ベースな Ruby の Web フレームワークである。簡単に言うと、軽量な ActionPack クローンである。

Merbのインストール
ヽ( ・∀・)ノくまくまー(2007-09-17) (優しいMerbの育て方)の手順に従ってインストール。
現在のMerbのバージョンは0.5.0。
gemでのインストール時にいくつか質問されたが適当にRubyの最新を選択。
するとrake installのところでエラー。
エラーメッセージに従って、ruby2rubyとjson_pureをgemでインストールすると、rake installできた。
Merb Docs - File: READMEを見ると依存するモジュールがいくつか変わったようだ。)

Merbを起動してブラウザからアクセスするがサーバが見つからない。
config/merb.ymlの:hostをブラウザのURL欄に入力するIPアドレスに変えてからMerb再起動。無事アクセスできた。(Hello Merb!)


Viewテンプレートを使う
ヽ( ・∀・)ノくまくまー(2007-09-19) (優しいMerbの育て方)に従ってViewテンプレートを使ってみる。
index.rhtmlを作ってアクセスしようとするとテンプレートが見つからないというエラー。
エラーメッセージによるとテンプレートのファイル名は"[アクション名].html.*"でないと駄目?(Rails2に合わせた?)
ファイル名をindex.html.erbにしたら表示できた。日本語も普通に表示できた。

Viewテンプレートに書くべきなのはbodyタグの内側だけで、それ以外(html要素の開始・終了タグ、head要素、body要素の開始タグ・終了タグ)はapp/views/layout/application.html.erbに書かれている。
application.html.erbはデフォルトのレイアウトで、controllerごとにレイアウトを分けるならapp/views/layout/<controller>.html.erbを作る。
ちなみに、Viewテンプレートを使わない場合は、自分で書いたもの以外は出力されない。(レイアウトは適用されない。)


ActiveRecordを使う
config/dependencies.rbのuse_ormのうち、activerecordのコメントアウトを外す。
merb_activerecordをインストール。
gem install merb_activerecord
config内のdatabase.sample.ymlを元にdatabase.ymlを作り、DB接続設定を書く。
:development: &defaults
:adapter: mysql
:database: database_name
:username: user_name
:password: password
:host: localhost
:socket: /var/lib/mysql/mysql.sock
:encoding: utf8
文字コード指定はRailsと同様に。これで日本語もDBから取得できた。


POSTしたデータを受け取る
Railsと同様に<input name="foo[bar]" />を、params[:foo][:bar]で受け取ることができる。


デーモンとして起動する
Merbをデーモンとして起動できる。
merb -d
しかし"merb -k all"や"merb -K all"では停止できなかった。
デーモンとして起動しているとactionの変更が反映されないので、開発中は逐次起動する使い方のようだ。


使ってみた印象
Railsよりシンプルで良さそう。ファイル名とかもシンプルだし。
RailsがActiveRecordからJavaScriptまで風呂敷に包んではいどうぞお手軽ですよーなブラックボックスなのに対して、Merbはそれらを電子ブロックのように外付けモジュールにして本体は身軽にしているイメージ?結局やることはそれほど変わらないが、シンプルな方が上に薄いカスタマイズレイヤーを被せるときに楽だ。
ruby2rubyを使っているところをみると、controllerとviewを実行時に実行用のrubyスクリプトとして再編成している?

ところで、Merb | Looking for a better framework? を見ると、"gem install merb --include-dependencies" だけでインストールできるみたいに書いてある(?)


参考: Merb Docs - File: README (本家マニュアル)

0 件のコメント:

ブログ アーカイブ

tags