walrusはRubyベースのWEBアプリケーションサーバです。 一番の特色は、非常に簡単なrubyスクリプトからHTMLファイルを柔軟に生成できることです。
枠(=フォーマットを記述するHTMLファイル)
<table> <tr id=app_servers><td id=name></td><td id=lang></td></tr> </table> |
|
+
|
中身(=変化する項目だけを生成するRubyスクリプト)
def app_servers
[
{ :name=>"Enhydra", :lang=>"java" },
{ :name=>"Zope", :lang=>"python" },
{ :name=>"Walrus", :lang=>"ruby" },
]
end
|
|
↓
|
結果
<table> <tr> <td>Enhydra</td> <td>java</td> </tr> <tr> <td>Zope</td> <td>python</td> </tr> <tr> <td>Walrus</td> <td>ruby</td> </tr> </table> |
通常のcgi等では、動的なコンテンツの変化する部分(中身)と変化しない部分(枠)がひとつのスクリプトに混在してしまいます。 このため、枠を変更するつもりが意図せずに中身まで変更してしまうこと等があり、 保守性が非常に悪くなります。 また、枠を作る人(デザイナーやユーザ)と中身を作る人(プログラマー)が分業で個別に作業することが難しくなっています。
walrusでは枠は完全に別のファイルであり、特殊なタグのない通常のHTMLで記述します。 中身は、Rubyのスクリプトであり、基本的にはHTML(を生成するコード)を一切含みません。 このため、分業が容易で保守性も高くなります。 また別の枠を作ると、中身はひとつでも複数のHTMLファイルを生成することができます。 これにより、i-mode用と一般ブラウザー用のように、複数のページを同一のロジックから生成することも可能です。
このHTMLテンプレート展開エンジンについては、 実際にオンラインデモで動作させることができます。
他に以下のような機能を持っています。
サイト内の見栄えを統一したり、 サイト内に複雑なリンクをはるようなホームページを作成するのが簡単になります。 また、クロスリファレンス機能があるので、 マニュアルのようなテクニカルドキュメントの作成にも適しています。
walrusはもともとは、静的にHTMLファイルを生成するツールですが、 apacheの配下でアプリケーションサーバとして動作させることも可能です。
詳細はマニュアルを参照してください。