Home > Ruby > RVM 環境だと RDoc ドキュメント生成時に js と images が含まれない不具合

RVM 環境だと RDoc ドキュメント生成時に js と images が含まれない不具合

  • 2011-05-02 (月)
  • Ruby
  • このエントリーを含むはてなブックマーク

rdoc コマンドにて生成される web page をブラウザで見ると、js やら images やらが欠如している事を発見。本来は生成される doc ディレクトリ下に js/ と images/ があり、その中に必要な jquery.js やら icon.png やらがあるのが本来の期待値な模様。この不具合のおかげで "click to view source code" をクリックする事で当該メソッドのソースコードが表示される便利機能が使えない。困った。

原因

Mac OS + RVM 環境で発生中。ググってみたら同現象について語ってる RubyForge のスレを発見。ここで問題のファイルを特定、コードを読んでみると js, images 資源を作成する RDoc 実装部分の:

js/images ディレクトリをコピーする際、
パスに dot (.) が含まれていたら無視する。

な記述がマズい模様。RVM 環境だとすべての Ruby + gem ソースが $HOME/.rvm 配下にあるゆえ。Oh。

該当 Ruby, RVM バージョン

$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) ... 略

$ rvm -v
rvm 1.6.3 ... 略

解決策

当該 RubyForge スレでは最新の RDoc ソースに修正を commit 済みと書いてあるも、リポジトリのどのバージョンの commit なのか、diff を表示するリンクだとかが一切判らず (RubyForge の見方がわからん w)。とりあえず Ruby 1.9.2p180 には反映されておらず、仕方ないので自前実装で対処。多分こんな風に書けばいいはず。似たような実装どこかで書いたことあった気がする。

$ vim ~/.rvm/rubies/default/lib/ruby/1.9.1/rdoc/generator/darkfish.rb
..
    # 154行目
    next if path =~ /#{File::SEPARATOR}\./
..

これをこう直すべし:

    next if path =~ /#{File::SEPARATOR}\.[^#{File::SEPARATOR}]+$/

ソースを直したら、もう一度 rdoc を再作成。

$ cd my-project
$ rdoc
$ ls -1 doc/
index.html
js/    # よっしゃー
img/

# ブラウザで開いて確認
$ open -a safari doc/index.html

対処完了

これでちっこいアイコン画像も表示されるようになり、件のソースコード AJAX ロード&表示する機能も無事動くようになった。んー RDoc ステキ。

Comments:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info

Home > Ruby > RVM 環境だと RDoc ドキュメント生成時に js と images が含まれない不具合

Search
Feeds

Page Top