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


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

Ruby 1.8.7
MacOSX 10.4.11
です。

よろしくお願いします。

回答の条件
  • 1人1回まで
  • 登録:2009/02/13 17:07:53
  • 終了:2009/02/20 01:23:21

ベストアンサー

id:sshi No.2

s回答回数14ベストアンサー獲得回数12009/02/18 22:09:41

ポイント100pt

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スクリプトを実行して確認してみてください。

id:norisuke3

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

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

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

2009/02/20 01:22:06

その他の回答(1件)

id:garyo No.1

garyo回答回数1782ベストアンサー獲得回数962009/02/14 13:55:08

ポイント30pt

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

以下はどうでしょうか

RDocのテンプレート

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

id:norisuke3

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

2009/02/18 15:02:54
id:sshi No.2

s回答回数14ベストアンサー獲得回数12009/02/18 22:09:41ここでベストアンサー

ポイント100pt

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スクリプトを実行して確認してみてください。

id:norisuke3

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

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

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

2009/02/20 01:22:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません