ããããRDoc
- 2010.08.24
- Ruby/Rails, åå¼·ä¼è³æ
Rubyã¨ã³ã¸ãã¢ã®ã¿ãªãããRDocæ¸ãã¦ã¾ããï¼ã人ãæ¸ããRDocã¯èªããã©ãèªåã§ã¯ãã¾ãæ¸ããªã...ãã¨ããæ¹ãããã£ãããããããã¾ãããããã§ä»åã¯RDocãæ¸ãããã®è¦ç¹ã«ã¤ãã¦æ´çãã¦ã¿ã¾ããã
RDocã®ç¹å¾´
RDocã¨ã¯ãã½ã¼ã¹ã³ã¼ãã解æãã¦HTMLå½¢å¼ãªã©ã®ããã¥ã¡ã³ããåºåãããã¼ã«ã§ããRubyã¯ãã¡ãããCã§æ¸ãããã©ã¤ãã©ãªã®ã³ã¼ãã解æã®å¯¾è±¡ã¨ãªãã¾ãã
ããã¥ã¡ã³ãã¯ã¢ã¸ã¥ã¼ã«ãã¯ã©ã¹ãã¡ã½ããã¨ãã£ãããã°ã©ã ã®æ§é ããã³ã¡ã³ãé¨åããçæããã¾ããç¬ç«ããææ¸ã§ã¯ãªãã½ã¼ã¹ã³ã¼ãããçæãããã®ã§ãã¡ã³ããã³ã¹ããããã¨è¨ããã§ãããã
ã¤ã³ã¹ãã¼ã«
ruby1.8ç³»ã¨ä¸ç·ã«ã¤ã³ã¹ãã¼ã«ãããrdocã¯ãã¼ã¸ã§ã³ãå¤ãã®ã§ãgemã§æ°ãããã®ãã¤ã³ã¹ãã¼ã«ãã¦ããã¨ããã§ããããä»åã¯ruby1.8.7ã¨rdoc2.3.0ã使ç¨ãã¾ããï¼ææ°çã¯2.5.11ã§ãããå¾è¿°ã®hannaãã³ãã¬ã¼ããå©ç¨ãããã2.3.0ãé¸ãã§ãã¾ãï¼
$ sudo gem install rdoc -v 2.3.0
$ rdoc --version
rdoc 2.3.0
ããã¥ã¡ã³ãã®çæ
ããã¥ã¡ã³ãã®çæã¯rdocã³ãã³ãã§è¡ãã¾ããããã¥ã¡ã³ãã¯æå®ã®ãã¡ã¤ã«ãã¾ãã¯æå®ãã£ã¬ã¯ããªä»¥ä¸ã®ãã¡ã¤ã«ããçæãããdocãã£ã¬ã¯ããªä»¥ä¸ã«åºåããã¾ããï¼åºåå ã®æå®ã¯-oãªãã·ã§ã³ã§å¯è½ï¼ãããã«æ¢åã®ã½ã¼ã¹ã³ã¼ãããçæãã¦ã¿ã¾ãããã
$ rdoc [ãªãã·ã§ã³] [ãã¡ã¤ã«ã¾ãã¯ãã£ã¬ã¯ããªã®ãã¹...]
主ãªãªãã·ã§ã³
rdocã³ãã³ãã®ä¸»ãªãªãã·ã§ã³ã以ä¸ã«ç´¹ä»ãã¾ãã詳細㯠rdoc --help ã§ç¢ºèªãã¦ãã ããã
- -c, --charset : åºåæåã³ã¼ãã®æå®
- -U, --force-update : å¤æ´ãããã½ã¼ã¹ããªãã¦ãçæããªãã
- -f, --format : ãã©ã¼ãããï¼HTML, riãªã©ï¼ã®æå®
- -S, --inline-source : ã½ã¼ã¹ã³ã¼ã表示ãã¤ã³ã©ã¤ã³ã«ãã
- -N, --line-numbers : ã½ã¼ã¹ã³ã¼ã表示ã«è¡çªå·ã表示
- -m, --main : å é ãã¼ã¸ã®æå®
- -o, --op : åºåå ãã£ã¬ã¯ããªã®æå®
- -T, --template : HTMLãã³ãã¬ã¼ãã®æå®ï¼å¾è¿°ï¼
RDOCOPT
ä¾ãã°åºåæåã³ã¼ãã®ããã«ãæ¯åæå®ããã®ãé¢åãªãªãã·ã§ã³ãããã¾ãããããã£ããªãã·ã§ã³ã¯ç°å¢å¤æ°RDOCOPTã«è¨å®ãã¦ãããã¨ã§ãã³ãã³ãå ¥åæã®æå®ãçç¥ãããã¨ãã§ãã¾ãããèªåã®ç°å¢ã«åãã㦠~/.zshrc ãªã©ã«è¨å®ã追å ãã¦ã¿ã¾ãããã
# ~/.zshrcã«ä»¥ä¸ãè¨è¿°ãããã¨ã§-cãªãã·ã§ã³ã®æå®ãçç¥ã§ããï¼zshã®å ´åï¼
export RDOCOPT="-c UTF8"
æ¸ãæ¹
rdocã¯ã¢ã¸ã¥ã¼ã«ãã¯ã©ã¹ãã¡ã½ãããªã©ã®ç´åã«æ¸ãããã³ã¡ã³ãé¨åããããã®èª¬æã¨ãã¦ããã¥ã¡ã³ãåãã¾ãã
=begin rdoc
å
é ã®ã³ã¡ã³ãé¨åã¯ãã¡ã¤ã«ã®èª¬æã¨ãã¦æ±ããã
=end
# ã¯ã©ã¹ã®èª¬æ
class Sample
# å®æ°ã®ä¾
CONST_SAMPLE = 'sample'
# å±æ§(ãªã¼ãã¼)
attr_reader :reader
# å±æ§(ã©ã¤ã¿ã¼)
attr_writer :writer
# å±æ§(ã¢ã¯ã»ããµ)
attr_accessor :accessor
# ã¡ã½ããã®èª¬æ
def sample_method
# ...
end
end
ä¾ãã°ä¸è¨ã®ã½ã¼ã¹ã³ã¼ãããRDocãçæããã¨ãåºåçµæã¯ä»¥ä¸ã®ããã«ãªãã¾ããï¼htmlãã©ã¼ããããæå®ããå ´åï¼
ãã¼ã¯ã¢ãã
決ããããã«ã¼ã«ã«å¾ã£ãã³ã¡ã³ããè¨è¿°ãããã¨ã§ãåºåçµæã«æ¸å¼ãè¨å®ãããã¨ãã§ãã¾ãã以ä¸ã«ä¸»ãªæ¸å¼ãç´¹ä»ãã¾ãã
è¦åºã
=è¦åºã1
==è¦åºã2
===è¦åºã3
...
ãªã¹ã
* ãªã¹ã1
* ãªã¹ã2
* ãã¹ãã¯ã¤ã³ãã³ããä¸ãã
1. æ°åãªã¹ã
2. æ°åãªã¹ã
3. æ°åãªã¹ã
ã©ãã«ä»ããªã¹ã
[list1] ãªã¹ã1
[list2] ãªã¹ã2
list1:: ãªã¹ã1
list2:: ãªã¹ã2
æåã¹ã¿ã¤ã«
*bold*
_italic_
+typewriter+
ã¢ã«ãã¡ããããã¢ã³ãã¼ã¹ã³ã¢ä»¥å¤ãå«ãå ´åã¯ä»¥ä¸ã使ç¨ãã¾ã
<b>太å</b>
<em>ã¤ã¿ãªãã¯</em>
<tt>ã¿ã¤ãã©ã¤ã¿ã¼ä½</tt>
ãªã³ã¯
URLã¨ã¿ãªãããæååã¯ãªã³ã¯ã«ãªãã¾ãããªã³ã¯æååãæå®ãããã¨ãå¯è½ã§ããç»åã®URLã¯ããã¥ã¡ã³ãã«æ¿å ¥ããã¾ãã
http://tech.feedforce.jp
{FFTT}[http://tech.feedforce.jp]
http://www.feedforce.jp/recruit/img/feature/fftt.gif
ãã£ã¬ã¯ãã£ã
ããã¥ã¡ã³ãã®çæã«ã¤ãã¦ç´°ããªæå®ãè¡ããã£ã¬ã¯ãã£ããç¨æããã¦ãã¾ãã
:nodoc:
æå®ã®è¦ç´ ãããã¥ã¡ã³ãã«å«ããªãããæå®ãããã¨ãã§ãã¾ããã:nodoc:ãã¨æå®ããå ´åã¨ã:nodoc: allãã¨æå®ããå ´åã§ããã¥ã¡ã³ã対象ãç°ãªãã¾ãã
# ãã®ã¢ã¸ã¥ã¼ã«èªä½ã¯ããã¥ã¡ã³ãåãããªã
module HiddenModule1 # :nodoc:
# ãã®ã¯ã©ã¹ã¯ããã¥ã¡ã³ãåããã
class Visible
end
end
module HiddenModule2 # :nodoc: all
# ãã®ã¯ã©ã¹ã¯ããã¥ã¡ã³ãåãããªã
class Invisible
end
end
:yield:
yieldå¼ã³åºããå«ãã¡ã½ããã¯ããã®ãã©ã¡ã¼ã¿åã表示ããã¾ãã:yield:ãã£ã¬ã¯ãã£ããæå®ããã¨ããã®è¡¨ç¤ºãã©ã¡ã¼ã¿åãå¤æ´ã§ãã¾ãã
ãã®ä»ã®ãã¼ã¯ã¢ããããã£ã¬ã¯ãã£ãã«ã¤ãã¦ã¯ RDocã®ããã¥ã¡ã³ããåç §ãã¦ãã ããã
ãã³ãã¬ã¼ã
çµã¿è¾¼ã¿ã§Darkfishãhtmlã¨ãã£ããã³ãã¬ã¼ãï¼ãã©ã¼ãããï¼ãç¨æããã¦ãã¾ããããã®ä»ã«å ¬éããã¦ãããã³ãã¬ã¼ããå©ç¨ãããã¨ãã§ãã¾ãã試ãã« hannaã¨ãããã³ãã¬ã¼ããå©ç¨ãã¦ã¿ã¾ãããã
ã¤ã³ã¹ãã¼ã«ã¨ããã¥ã¡ã³ãã®çæ
hannaãã³ãã¬ã¼ãã¯gemã§æä¾ããã¦ãã¾ãã
$ sudo gem install hanna
hannaãã³ãã¬ã¼ãã使ã£ãããã¥ã¡ã³ãçæã¯ä»¥ä¸ã®ããã«å®è¡ãã¾ãã
rdoc -f html -S -T hanna [ãã¡ã¤ã«ã¾ãã¯ãã£ã¬ã¯ããªã®ãã¹...]
# ã¾ãã¯
hanna [ãªãã·ã§ã³] [ãã¡ã¤ã«ã¾ãã¯ãã£ã¬ã¯ããªã®ãã¹...]
å ã»ã©çæããããã¥ã¡ã³ããhannaãã³ãã¬ã¼ãã§çæããã¨ä»¥ä¸ã®ããã«ãªãã¾ããAjaxã«ããã¡ã½ããã®æ¤ç´¢ãå¯è½ã§ãã
ãã®ä»ã®ãã³ãã¬ã¼ã
Rakeã¿ã¹ã¯ã®å®ç¾©
ç°å¢å¤æ°RDOCOPTã§rdocã³ãã³ãå ±éã®ãªãã·ã§ã³ã¯æå®ã§ãã¾ããããã¼ã ã¡ã³ãã¼éã§ã®å ±æãããã¸ã§ã¯ãå¥ã®æå®ã«ã¯å¯¾å¿ã§ãã¾ãããããã§Rakeã¿ã¹ã¯ãå®ç¾©ãã¦ãããã¥ã¡ã³ãçæä½æ¥ãå®ååãã¦ã¿ã¾ããããä¾ãã°ä»¥ä¸ã®ããã«Rakefileãè¨è¿°ãããã¨ã§ãããã¥ã¡ã³ãçæã¿ã¹ã¯:rdocãå®ç¾©ã§ãã¾ãã
require 'rake/rdoctask'
gem 'rdoc', '2.3.0' # gemã§ã¤ã³ã¹ãã¼ã«ãããrdocã使ãå ´åã«å¿
è¦
require 'rdoc'
Rake::RDocTask.new(:rdoc) do |rdoc|
rdoc.options
ãªãå¼ç¤¾å ã®ããã¸ã§ã¯ãã§ã¯ CruiseControl.rbã§ã®ãã«ãã®éã«RDocãçæãããã«ããµã¼ããããã¤ã§ãåç §ã§ããããã«ãã¦ãã¾ãã
ãããã«
以ä¸ã®ããã«ãRDocã¯æ¯è¼çå°ãªãå´åã§åç §ããããããã¥ã¡ã³ããçæãããã¨ãã§ãã¾ããç¹ã«ãã¼ã éçºãããã¦ããå ´åã¯ãåæ»ãªã³ãã¥ãã±ã¼ã·ã§ã³ã®ããã«å½¹ç«ã¦ã¦ã¿ã¦ã¯ãããã§ããããã