<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>func09 &#187; rdoc</title>
	<atom:link href="http://www.func09.com/wordpress/archives/tag/rdoc/feed" rel="self" type="application/rss+xml" />
	<link>http://www.func09.com/wordpress</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 06 Feb 2012 04:25:55 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>スマートな検索ができるRDocを自分のプロジェクトでも使う方法</title>
		<link>http://www.func09.com/wordpress/archives/505</link>
		<comments>http://www.func09.com/wordpress/archives/505#comments</comments>
		<pubDate>Thu, 02 Apr 2009 17:22:16 +0000</pubDate>
		<dc:creator>haga</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[日記]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rdoc]]></category>

		<guid isPermaLink="false">http://www.func09.com/wordpress/?p=505</guid>
		<description><![CDATA[はじめに 先日エントリーに書いた「Rails Searchable API Doc」のような、便利なRDocを自分のプロジェクトにも適用したい。 それを可能にするためのGemパッケージ「sdoc」がRails Searc [...]]]></description>
			<content:encoded><![CDATA[<h2>はじめに</h2>

<p>先日エントリーに書いた「<a href="http://railsapi.com/">Rails Searchable API Doc</a>」のような、便利なRDocを自分のプロジェクトにも適用したい。
それを可能にするためのGemパッケージ「<a href="http://github.com/voloko/sdoc/tree/master">sdoc</a>」がRails Searchable API Docの作者から提供されています。</p>

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

<h2>インストール</h2>

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

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sudo gem install rdoc<br />
sudo gem install json<br />
sudo gem install voloko-sdoc --source http://gems.github.com</div></div>

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

<p>ちなみにRDocの2.4からだと思うのですがデフォルトのテンプレートが<a href="http://deveiate.org/projects/Darkfish-Rdoc/">DarkFish</a>というちょっとクールなものに変わっているみたいです。あんまりRubyっぽくないデザインです。</p>

<h2>使い方</h2>

<p>使い方は非常に簡単です</p>

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sdoc ディレクトリ名</div></div>

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

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

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sdoc . -o doc/s_app -U -x vendor -x test -x doc -x tmp -x script -x public -x log -x config</div></div>

<p>と実行すればOKです。</p>

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

<h2>Rake化</h2>

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

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

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"># lib/task/sdoc.rake<br />
namespace :doc do<br />
&nbsp; namespace :sdoc do<br />
&nbsp; &nbsp; desc &quot;Generate SDoc Documentation&quot;<br />
&nbsp; &nbsp; task :app do<br />
&nbsp; &nbsp; &nbsp; output = 'doc/s_app'<br />
&nbsp; &nbsp; &nbsp; ignores = %w{vendor test doc tmp script public log config}<br />
&nbsp; &nbsp; &nbsp; rm_rf output<br />
&nbsp; &nbsp; &nbsp; option_exclude = ignores.map{|i| &quot;-x #{i}&quot;}.join(&quot; &quot;)<br />
&nbsp; &nbsp; &nbsp; sh &quot;sdoc . -o #{output} -U #{option_exclude}&quot;<br />
&nbsp; &nbsp; end<br />
&nbsp; end<br />
end</div></div>

<p>で、Rakeタスクを実行です。</p>

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">rake doc:sdoc:app</div></div>

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

<p><img src="http://www.func09.com/wordpress/wp-content/uploads/2009/04/rdoc-documentation.jpg" alt="rdoc-documentation" title="rdoc-documentation" width="603" height="501" class="alignnone size-full wp-image-514" /></p>

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

<h2>バグ</h2>

<p>素晴らしいと喜んでいたのも束の間、バグを見つけました。（2009-04-03現在）</p>

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

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

<p>直したdiff
<a href="http://github.com/func09/sdoc/commit/820e29a25efc7957d25dda4d128cae9f2e20844d">http://github.com/func09/sdoc/commit/820e29a25efc7957d25dda4d128cae9f2e20844d</a></p>

<h2>参考ページ</h2>

<ul>
<li><a href="http://railsapi.com/">http://railsapi.com/</a><br /></li>
<li><a href="http://github.com/voloko/sdoc/tree/master">http://github.com/voloko/sdoc/tree/master</a><br /></li>
<li><a href="http://blog.s21g.com/articles/1390">hannaテンプレートでgemのrdocをスタイリッシュに</a><br /></li>
<li><a href="http://github.com/func09/sdoc/commit/820e29a25efc7957d25dda4d128cae9f2e20844d">http://github.com/func09/sdoc/commit/820e29a25efc7957d25dda4d128cae9f2e20844d</a><br /></li>
</ul>

<h2>さいごに</h2>

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

<p>調べながらRDocのソースを読んでいると、やっぱすごい人のソースはすごいなぁと。こういうメジャーなライブラリのひとつやふたつ隅から隅まで読んでみる、なんてことしてみたいが・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.func09.com/wordpress/archives/505/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

