はじめに

先日エントリーに書いた「Rails Searchable API Doc」のような、便利なRDocを自分のプロジェクトにも適用したい。 それを可能にするためのGemパッケージ「sdoc」がRails Searchable API Docの作者から提供されています。

これはさっそく使ってみたいと思います。

インストール

githubからインストールします。
jsonとrdocの新しいバージョンを要求されますのでインストールしておきます。

  1. sudo gem install rdoc
  2. sudo gem install json
  3. sudo gem install voloko-sdoc --source http://gems.github.com


これでsdocというコマンドが実行できるようになりました。
sdocはrdocにSHTMLというフォーマットを追加してラップしただけのもののようです。

ちなみにRDocの2.4からだと思うのですがデフォルトのテンプレートがDarkFishというちょっとクールなものに変わっているみたいです。あんまりRubyっぽくないデザインです。

使い方

使い方は非常に簡単です

  1. sdoc ディレクトリ名


と実行すればdocフォルダを作成しその中にドキュメントのHTMLを作成してくれます。

Railsのプロジェクトをドキュメント化したい場合、プロジェクトフォルダ内で

  1. sdoc . -o doc/s_app -U -x vendor -x test -x doc -x tmp -x script -x public -x log -x config


と実行すればOKです。

無視するディレクトリは-xオプションで指定します。

Rake化

単純なRakeタスクにしておいても良いでしょう。

Railsのプロジェクトのlib/taskにsdoc.rakeというファイルを生成して、以下のようにシェルを実行する記述をします。

  1. # lib/task/sdoc.rake
  2. namespace :doc do
  3.   namespace :sdoc do
  4.     desc "Generate SDoc Documentation"
  5.     task :app do
  6.       output = 'doc/s_app'
  7.       ignores = %w{vendor test doc tmp script public log config}
  8.       rm_rf output
  9.       option_exclude = ignores.map{|i| "-x #{i}"}.join(" ")
  10.       sh "sdoc . -o #{output} -U #{option_exclude}"
  11.     end
  12.   end
  13. end


で、Rakeタスクを実行です。

  1. rake doc:sdoc:app


で、ドキュメントをdoc/s_appに生成します。

rdoc-documentation

どうですか?サーチャブルなRDocが自分のプロジェクトにも適用されました!
これはがんばってコメントを書こうというモチベーションにも繋がります!素晴らしい!

バグ

素晴らしいと喜んでいたのも束の間、バグを見つけました。(2009-04-03現在)

ドキュメントのテンプレートの中に「%charset%」という置き換えされない文字列がありました。
そうです文字コード指定ができないので、日本語が化け化けです。

大したバグじゃないのでGithubでフォークして直してみました。
本体にプッシュ要求する方法を知らないのでどうしたらいいのだろうか・・?英語も書けないしなー。だれかテーチミー。

直したdiff http://github.com/func09/sdoc/commit/820e29a25efc7957d25dda4d128cae9f2e20844d

参考ページ

さいごに

当初はsdocを使いたいというよりも、RDocのテンプレートの書き方を知りたいと思っていろいろ探したんですが、いまいち良くわからなかった。テンプレートとフォーマットの違いって何だろう?

調べながらRDocのソースを読んでいると、やっぱすごい人のソースはすごいなぁと。こういうメジャーなライブラリのひとつやふたつ隅から隅まで読んでみる、なんてことしてみたいが・・。

Posted in ruby, ruby on rails, 日記 at 4月 3rd, 2009. No Comments.