1. ri ドキュメントはrdocコマンドでソースから生成する物ですか?もしそうなら、生成に必要なソースコード内のドキュメントのフォーマットと、riドキュメントの生成方法を教えてください。
2. 生成したriドキュメントをri コマンドで検索できるようにインストールする方法を教えてください。(riドキュメントの有るフォルダへのパス等を設定する必要が有る?)
3. デフォルトの状態(Rubyのインストール直後)でriコマンドで検索する事の出来る、標準ライブラリ内の関数(例:Array.join)のri ドキュメントは(通常)どこに有りますか?
Ruby 1.8.7
MacOSX 10.4.11
です。
よろしくお願いします。
riはあまり使ったことがないのですが、サイト検索&1.8.7のソースコードをみながら、手元のUbuntu環境上の1.9.1でちょっと試した結果を書きます。MacOSX 10.4.11とは細かいところは違うかもしれませんが、そんなに外れていないと思います。
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. 生成したriドキュメントをri コマンドで検索できるようにインストールする方法を教えてください。(riドキュメントの有るフォルダへのパス等を設定する必要が有る?)
結論からいうと、rdocに--riオプションをつけて生成してやればそれだけで検索可能になります。
riは、いくつかの特定のディレクトリおよび--doc-dirオプションで与えたディレクトリからドキュメントを検索します。したがって、上記の方法で生成したファイルをそのディレクトリのどれかに格納してやれば検索可能になります。
ところが、"いくつかの特定のディレクトリ"の中にはUnix環境ではホームディレクトリ直下の.rdocディレクトリが含まれており、実はriオプションでの生成時に出力先を省略すると、そのディレクトリに出力されます。
したがって、生成時にrdocに--riオプションのみ指定し、出力先を省略すればそれだけで自動的に検索可能になるというわけです。
(ちなみに1.8.7では確認していませんが、1.9.1のriでは、ri --helpでどこが検索対象のディレクトリなのかが表示されました)
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スクリプトを実行して確認してみてください。
>生成に必要なソースコード内のドキュメントのフォーマット
以下はどうでしょうか
RDocのテンプレート
http://arton.no-ip.info/collabo/backyard/?RDoc%A4%CE%A5%C6%A5%F3...
RDocよりも、もっとRIにフォーカスした資料が有ったら良かったのですが。
riはあまり使ったことがないのですが、サイト検索&1.8.7のソースコードをみながら、手元のUbuntu環境上の1.9.1でちょっと試した結果を書きます。MacOSX 10.4.11とは細かいところは違うかもしれませんが、そんなに外れていないと思います。
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. 生成したriドキュメントをri コマンドで検索できるようにインストールする方法を教えてください。(riドキュメントの有るフォルダへのパス等を設定する必要が有る?)
結論からいうと、rdocに--riオプションをつけて生成してやればそれだけで検索可能になります。
riは、いくつかの特定のディレクトリおよび--doc-dirオプションで与えたディレクトリからドキュメントを検索します。したがって、上記の方法で生成したファイルをそのディレクトリのどれかに格納してやれば検索可能になります。
ところが、"いくつかの特定のディレクトリ"の中にはUnix環境ではホームディレクトリ直下の.rdocディレクトリが含まれており、実はriオプションでの生成時に出力先を省略すると、そのディレクトリに出力されます。
したがって、生成時にrdocに--riオプションのみ指定し、出力先を省略すればそれだけで自動的に検索可能になるというわけです。
(ちなみに1.8.7では確認していませんが、1.9.1のriでは、ri --helpでどこが検索対象のディレクトリなのかが表示されました)
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 で検索対象ディレクトリが表示されました。
素晴らしい。完璧です。riの挙動が完全にわかりました。
わざわざいろいろと調べていただいた様ですが本当にありがとうございます。
ちなみに、Ruby 1.8.7 の ri でも ri --help で検索対象ディレクトリが表示されました。