人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Ruby の ri ドキュメントに付いて教えてください。

1. ri ドキュメントはrdocコマンドでソースから生成する物ですか?もしそうなら、生成に必要なソースコード内のドキュメントのフォーマットと、riドキュメントの生成方法を教えてください。
2. 生成したriドキュメントをri コマンドで検索できるようにインストールする方法を教えてください。(riドキュメントの有るフォルダへのパス等を設定する必要が有る?)
3. デフォルトの状態(Rubyのインストール直後)でriコマンドで検索する事の出来る、標準ライブラリ内の関数(例:Array.join)のri ドキュメントは(通常)どこに有りますか?

Ruby 1.8.7
MacOSX 10.4.11
です。

よろしくお願いします。

●質問者: norisuke3
●カテゴリ:コンピュータ
✍キーワード:MacOSX RI Ruby Ruby 1.8.7 Rubyのインストール
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● garyo
●30ポイント

>生成に必要なソースコード内のドキュメントのフォーマット

以下はどうでしょうか

RDocのテンプレート

http://arton.no-ip.info/collabo/backyard/?RDoc%A4%CE%A5%C6%A5%F3...

◎質問者からの返答

RDocよりも、もっとRIにフォーカスした資料が有ったら良かったのですが。


2 ● s
●100ポイント ベストアンサー

riはあまり使ったことがないのですが、サイト検索&1.8.7のソースコードをみながら、手元のUbuntu環境上の1.9.1でちょっと試した結果を書きます。MacOSX 10.4.11とは細かいところは違うかもしれませんが、そんなに外れていないと思います。

その1

1. ri ドキュメントはrdocコマンドでソースから生成する物ですか?もしそうなら、生成に必要なソースコード内のドキュメントのフォーマットと、riドキュメントの生成方法を教えてください。

そうです。

基本的にriはrdocフォーマットで記述された情報を読むためのコマンドなので、"生成に必要なソースコード内のドキュメントのフォーマット"は、rdocフォーマットです。

rdocフォーマットからriで読める形式に変換するのはrdocコマンドの--riオプションを使います。オプションの詳細は http://www.kmc.gr.jp/~ohai/rdoc.ja.html に訳がまとまっていました。

生成するには、--riオプションと出力先を指定するだけです。実際にriオプションを使って生成している例が http://pools.jp/2008/03/06/ri-rdoc-gems/ にありました。

その2

2. 生成したriドキュメントをri コマンドで検索できるようにインストールする方法を教えてください。(riドキュメントの有るフォルダへのパス等を設定する必要が有る?)

結論からいうと、rdocに--riオプションをつけて生成してやればそれだけで検索可能になります。

riは、いくつかの特定のディレクトリおよび--doc-dirオプションで与えたディレクトリからドキュメントを検索します。したがって、上記の方法で生成したファイルをそのディレクトリのどれかに格納してやれば検索可能になります。

ところが、"いくつかの特定のディレクトリ"の中にはUnix環境ではホームディレクトリ直下の.rdocディレクトリが含まれており、実はriオプションでの生成時に出力先を省略すると、そのディレクトリに出力されます。

したがって、生成時にrdocに--riオプションのみ指定し、出力先を省略すればそれだけで自動的に検索可能になるというわけです。

(ちなみに1.8.7では確認していませんが、1.9.1のriでは、ri --helpでどこが検索対象のディレクトリなのかが表示されました)

その3

3. デフォルトの状態(Rubyのインストール直後)でriコマンドで検索する事の出来る、標準ライブラリ内の関数(例:Array.join)のri ドキュメントは(通常)どこに有りますか?

私の環境では、Array#joinのドキュメントは、

/usr/local/share/ri/1.9.1/system/Array/join-i.yaml

にありました。

すこしriのソースファイルを追いかけてみましたが、riはrubyの設定からディレクトリを取得していて、標準ライブラリは

require 'rbconfig'
p Config::CONFIG["datadir"]

で表示されるディレクトリ以下の、ri/[rubyのバージョン]/system以下に格納されています。

MacOSではディレクトリ構造は違うかもしれませんが、riの実装は同じはずなので上のrubyスクリプトを実行して確認してみてください。

◎質問者からの返答

素晴らしい。完璧です。riの挙動が完全にわかりました。

わざわざいろいろと調べていただいた様ですが本当にありがとうございます。

ちなみに、Ruby 1.8.7 の ri でも ri --help で検索対象ディレクトリが表示されました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ