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_activerecordconfig内のdatabase.sample.ymlを元にdatabase.ymlを作り、DB接続設定を書く。
:development: &defaults文字コード指定はRailsと同様に。これで日本語もDBから取得できた。
:adapter: mysql
:database: database_name
:username: user_name
:password: password
:host: localhost
:socket: /var/lib/mysql/mysql.sock
:encoding: utf8
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 件のコメント:
コメントを投稿