このサイトの作り方
このサイト(I like Ruby)がどうやって生成されているのか紹介します。 コンテンツの質と比較してとても複雑な構成で書かれています。
概観
利用者的な視点でいうと次の手順でページを作成しています。
- 自宅サーバ (WEBrick)
- RWiki2を使ってコンテンツを記述
- Divを使ってサイドバー、テーマなどレイアウト
- プレビューがすんだらDivからスナップショットを生成
- ftpupでbiglobeにupload
まわりくどいですが、RWiki/RDにだいぶ慣れてしまったのでこうやって 書くのが一番楽そうだったのです。
と、言いつつ今回も別の目的があります。DivとRinda2のRingの検証です。
概観・裏
仕組みはさらに複雑でRinda2から追加されたRinda::Ringを利用します。
WEBrickへのサーブレット(DivのTofulet)のmountや、RWikiサーバの検索などに Ringのネームサーバ機能を利用します。 プロセスの配置は動的に変更することもできます。 WEBrickとTofulet, RWikiが自宅内LANのマシンに分散配置されたりします。
次の手順で起動します。
- RingServerの起動。
- RWiki/WEBrick/Divのアプリケーションのいずれかの起動。
部品には次のものがあります。
- WEBrickを使ったtofu-runner
- RWikiデーモン
- RWikiのviewer/editor - Divのアプリケーション
- 箱入り娘 - Divのアプリケーション
- お小遣い帳 saifu - Divのアプリケーション
- ...
結局必要なプロセスを起動しなくては機能はしないのですが、 順不同で起動してもちゃんと機能します。 これは、特定の部品(プロセス)を再起動することが可能であることを示します。
このサイトのシステムはRingがどのくらい堅牢(?)なシステムを作れるのかの実験でもあるのです。
あれ?咳の書くのはいつも実験ばっかりですね。
このサイトのDivはdiv-1.2.0/sample/rwikiに入っています。
Ring
RingはRinda2のTupleSpaceを利用したネームサーバとネームサーバを検索する仕組みです。 RingのネームサーバはRingServerのインスタンスでローカルのネットワーク上に 一つ必要になります。