d.sunnyone.org
sunnyone.org

ページ

ラベル Gollum の投稿を表示しています。 すべての投稿を表示
ラベル Gollum の投稿を表示しています。 すべての投稿を表示

2012-11-18

Gollumのblockdiag対応

どうも都合のよいことにGollumのpull requestにGraphviz対応があり、変更すべきところがまるわかりだったので、真似してblockdiagに対応した。

こんな感じでblockdiagが書ける。
 <blockdiag>
  { A -> B; }
 </blockdiag>

MediaWiki extensionと異なり、seqdiag/actdiag/nwdiagを使うときは専用のものを使う。
 <seqdiag>
  { A -> B; }
 </seqdiag>

出力サンプルはこんな感じ。


Extensionという仕組みがないようなので、パッチという形になってしまうが、対応したものがこちら。

Gollumで日本語ファイル名を使う

前回紹介したWiki、Gollum。すでにレポジトリに入っているものに対しては問題なく日本語ファイル名も使えるのだが、Createするときに問題がある。それは...

このように日本語ページへのリンクを作り、
リンクをたどってCreateさせると...
"nituite"はいいにしても"ri ben yu"は日本語じゃありませんから!

これはあまりにもひどいので調べたところ、"to_url"というメソッドがこの変換をやっている模様。あまりはっきりとは調べてないのだが、どうやらstringexというモジュールに"Unidecode"という機能があり、これをしているようだ。

仕方ないので、この機能を外した。to_urlはどうもこのページ名の調整に使っているっぽいので、すべてのto_urlを機能しなくした。それに伴いURLエンコードが必要になる部分があるので、対応した。
 その変更がこちら。

GitバックエンドなWiki「Gollum」をインストールする

Gitit使ってたんじゃなかったのかよ、という話なのだが、Gititは単体でディレクトリ以下にホストできない((Virtual)Host必須)とか、いろいろ遭遇したので、別のものを使ってみた。

使ってみたのは、Githubの(?)Wiki engine「Gollum」
http://github.com/github/gollum


Ruby, Sinatraのお馴染みの構成。今のところRuby 1.8でも動く優しい仕様。
画面はこんな感じ。



インストール

gemで入れる方法もあるが、細かい事情によりちょいちょいいじる必要があるため、git cloneしてbundlerで拾ってくる方法を取る(bundlerは例えばUbuntu 12.04ならapt-get install ruby-bundlerで入る。)

bundleコマンドが使える状態になったら、bundleコマンドを叩く前に、libxsltの開発パッケージをインストールする(自分のところでこれが足りなかっただけで、他にも必要かも)
# apt-get install libxslt-dev

あとは、cloneしてbundle installすればOK。
$ cd ~/opt
$ git clone https://github.com/github/gollum.git
$ cd gollum
$ bundle install --path vendor/bundler

設定

保存するためのgitレポジトリを作る。
$ mkdir ~/wikidata
$ cd wikidata
$ git init
--bareで作ったものは2012/11/17時点のmasterでは怒られる(手元のは対応させちゃった)

実行方法

bundlerで入れたので、bundle execを使う。
$ bundle exec bin/gollum --port 5080 --base-path wiki ~/wikidata
--base-path wikiを指定すると、/wiki/がトップになる(=ProxyPassするときに便利)

あとはhttp://server:5080/wiki/にアクセスすればOK.

デーモン化

例によってrunitを使った。以下のような感じ。
$ mkdir -p ~/var/log/gollum
$ mkdir -p ~/service/.gollum/log

$ vi ~/service/.gollum/run
~~~
#!/bin/sh
echo "Start."
cd ~/opt/gollum
exec bundle exec bin/gollum --host 127.0.0.1 --port 5080 --base-path wiki ~/wikidata 2>&1
~~~

$ chmod +x ~/service/.gollum/run
$ vi ~/service/.gollum/log/run
~~~
#!/bin/sh
exec svlogd -tt ~/var/log/gollum
~~~

chmod +x ~/service/.gollum/log/run

$ mv ~/service/.gollum ~/service/gollum

--host 127.0.0.1をつけたいんだけど、--helpに書いてあるのにまさかの無視される罠があるのでそのままでは使えない。(これも対応させた。)
マージされたので--host使えます。

認証

Apacheでかける。

<Location /wiki>
          AuthUserFile /dokka/www/htpasswd-wiki
          AuthGroupFile /dev/null
          AuthName "Input password"
          AuthType basic

          require valid-user
        </Location>

        ProxyPass /wiki/ http://127.0.0.1:5080/wiki/
        ProxyPassReverse /wiki/ http://127.0.0.1:5080/wiki/

これで概ね使うことができる。