きりかノート 3冊め

おあそびプログラミング

rabrickをBonjour経由で公開してみる

プレセンテーションツールRabbitには、webインターフェイスでスライドを公開・操作できるrabrickというコマンドがある(使い方は[ruby-list:40844]参照)。
これをBonjourにのせてみることにする。

gemからdnnsdeasyjourをインストールして、rabrickをちょこっと修正。

 Index: bin/rabrick
===================================================================
--- bin/rabrick (revision 1227)
+++ bin/rabrick (working copy)
@@ -13,6 +13,7 @@
Rabbit::Console.parse!(args, logger) do |opts, options|
options.druby_uri = "druby://localhost:10101"
options.port = 10102
+ options.bonjour = false
options.debug = false


@@ -31,6 +32,12 @@
options.port = port
end

+ opts.on("--[no-]bonjour",
+ _("Specify whether bonjour enable or not."),
+ "(#{options.bonjour})") do |bool|
+ options.bonjour = bool
+ end
+
opts.on("--[no-]debug",
_("Specify whether debug mode or not."),
"(#{options.debug})") do |bool|
@@ -57,6 +64,11 @@

trap("INT") {server.shutdown}
server_thread = Thread.new {server.start}
+ if options.bonjour
+ require 'easyjour'
+ jour_title = 'Rabbit - ' + rabbit.title
+ jour = Easyjour::Service.new(jour_title, 'http', options.port)
+ end
if options.debug
while gets
logger.info(_("reloading ERB templates..."))

これで、

  • Safariの環境設定>ブックマークで「Bonjourを表示」にする
  • rabrickを--bonjourオプションをつけて開始

とすると、Safariのブックマークに"Rabbit - (スライドのタイトル)"と表示されるので、それを選択するとrabrickにアクセスできる。ホスト名やport番号がBonjour経由で解決されるので自分で入力しなくてよい。かんたん。

URLがhttp ://(Macの名前).local.:(rabrickのport)/となっていて、"local"の後ろにドットがあるのがキモチワルイけど気にしないように努力。
あと、プロキシが間に入るとダメだったりするので注意。

Safari以外のブラウザでにBonjour経由でサービスにアクセスできるか、確認してみたけど

  • OmniWeb 5.9.1 - ブックマークの「ローカルウェブサーバ」から
  • iCab 4.5.0 - 該当機能が見当たらない
  • Firefox 3.0.3 - 該当機能が見当たらない

という残念な結果。Firefoxは拡張がありそうだけど探してない。
それにしても、iPod touchSafariにも見当たらないのはどーゆーことだろう…さすがに自分の見落としだと思うんだけど。

(2009/03/28 追記)

ちなみにこんな感じ。

SafariのBonjourにrabrickを表示