Ruby Freaks Lounge
第13回 モジュラーなWebアプリケーションフレームワーク,Merb
はじめに
MerbはRubyで記述されたWebアプリケーションフレームワークです。2006年の10月18日にEzra Zygmuntowicz氏によって最初のリリースが発表されました。
RubyでWebアプリケーションフレームワークといえばRuby on Rails(以下Rails)が有名ですが,Merbは以下のような特長を備えています。
- ActiveRecord, DataMapper, SequelなどのORMを自由に選べる
- jQuery, PrototypeなどのJavaScriptライブラリを自由に選べる
- HAML, ERBなどのテンプレートエンジンを自由に選べる
- 単一の機能を実現するために作られた再利用しやすいプラグイン群がある
- 軽量でシンプルなコア
- プラグイン機構としてRubyGemsを使っている
- ControllerとViewのコンテクストが同じ
- シンプルで強力なルーティングの仕組み
Merbの特徴は,モジュラーであることです。例えばビュッフェ形式のように,自分の好きな道具を選んで利用することができます。
また,Railsより後発のプロジェクトということで,全体的にRailsの問題点を克服するような設計となっています。最近では,Railsの次期メジャーリリースでMerbとの統合を行うという発表がなされるなど,Merbの優れた特長の多くがRailsに逆輸入される状況になっています。
インストール方法
では早速,Merbをインストールしてみましょう。Merbをインストールする方法としては,RubyGemsを使うのが一番簡単です。
以下のようにgemコマンドを使ってインストールしてみましょう。
% sudo gem install merb
merbというパッケージは,Merbが依存しているgemを一括してインストールするためのバンドルGemになっています。
執筆時点の最新バージョン(merb-1.0.11)では,49個のGemがインストールされます。Merbを構成している個々のコンポーネントは,すべて独立したgemとして提供されています。Merbでは,プラグインについてもすべてGemで提供する事になっており,バージョン管理の煩雑さを回避する事に一役買っています。
Merbを使ってみる
では,実際にMerbを使ってWebアプリケーションを作ってみましょう。以下のようなコマンドを実行すると,Merbアプリケーションのひな形を生成することができます。
% merb-gen app my_app_name
このmerb-genというコマンドは,templaterというGenerator生成ライブラリを使って実装されています。merbでは,controllerやtestなどのひな形を使うときには,このmerb-genコマンドを利用します。templater自体,非常に汎用的で優れたGeneratorフレームワークなので,コードジェネレータを作りたいときには重宝します。
アプリケーションのひな形が生成されたら,ひな形のディレクトリに移動してWebサーバを起動してみましょう。以下のコマンドでWebサーバが立ち上がり,4000番のポートでアクセスできるようになります。
% merb
では早速,http://localhost:4000にブラウザでアクセスしてみましょう。以下のような画面が表示されます(図1)。
この画面は,リクエストされたPATH '/' に対応するルートが定義されていない場合に表示されるエラー画面です。
Merbには,発生した例外に対応するエラーページを表示する機能が最初から備わっています。
それでは,'/' へのリクエストに応答するために,以下のコマンドでTopコントローラのひな形を生成してみます。
% merb-gen controller top
[ADDED] app/controllers/top.rb
[ADDED] app/views/top/index.html.erb
[ADDED] spec/requests/top_spec.rb
[ADDED] app/helpers/top_helper.rb
これで,Topコントローラが生成されました。コントローラのファイルは,Railsと同様にapp/controllersディレクトリに設置されます。
以下は生成されたapp/controllers/top.rbファイルです。
リスト1 app/controllers/top.rb
class Top < Application
def index
render
end
end
Applicationというクラスは,全てのコントローラの基底クラスとなるコントローラです。
この辺りはRailsと似ていますが,Railsとは違って,コントローラの名前としてTopという短い名前が使われています。メソッド名やクラス名に対するミニマリズムは,Merbの個性的な一面です。
次に,PATHとコントローラを結びつけるために,ルーティングの設定を行います。ルーティングの設定は,config/router.rbの中で行います。ファイルの最後の方に以下のような記述を加えましょう。
リスト2 config/router.rb
Merb::Router.prepare do
# Change this for your home page to be available at /
match('/').to(:controller => 'top', :action =>'index')
end
Ruby Freaks Lounge
- 第35回 実用的なダミーサーバ ww(double-web)(1)
- 第34回 Redmineプラグイン開発(1)
- 第33回 RubyistのためのMongoDB入門(2)
- 第32回 Reactorで非同期処理をやってみよう(2)
- 第31回 RubyistのためのMongoDB入門(1)
- 第30回 RubyとHadoopで分散処理 Hadoop Streamingで外部データを読み込む
- 第29回 Reactorで非同期処理をやってみよう(1)
- 第28回 RubyとHadoopで分散処理 Hadoop Streamingの仕組み
- 第27回 RMagickを用いた画像処理:アニメGIF
- 第26回 RMagickを用いた画像処理(1)リサイズ


