- ベストアンサー
requireするファイルのパスとエラー解消方法
- 質問者はプログラミングの知識がほとんどないが、仕事でRubyを使用する必要があるため、require '○○'という記述について質問している。
- require '○○'という記述を無視して実行したところ、エラーが発生した。
- 質問者は○○ファイルをいくつかのディレクトリに置いてみたが、どのディレクトリでも同じエラーが発生した。どこに○○ファイルを置くべきかわからない。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
カレントディレクトリがロード対象のパスから外れているようですね。 1.○○.rbをスクリプトファイルと同じ場所に置いた場合は、オプションでカレントディレクトリを追加する > ruby -I. foo.rb 2.スクリプトファイル内でパスを追加する $LOAD_PATH.push('.') # この行をrequreの前に追加 require '○○' 3.あるいは既に定義されているパスに○○.rbを置くとか パスの確認は以下でできます。 > ruby -r pp -e"pp $LOAD_PATH" こんな感じでどうでしょうか。
その他の回答 (4)
- ki073
- ベストアンサー率77% (491/634)
たびたびすみません。 確認事項ですが、require '○○' が仮に require 'abc' だとすると ファイル名はabc.rbと拡張子がrbになっていますよね。 それとそのファイルをテキストエディタで読み込み可能で、rubyで書かれていますのね。 (バイナリだと違う拡張子になります)
- ki073
- ベストアンサー率77% (491/634)
ANo.3の続きですが、 ANo.1とANo.2をやったけども駄目だったという解釈での回答です。 質問を見ますと、makeindex.rbでエラーが出ていますので require '○○' はmakeindex.rbにあるコマンドですよね?? まず irbを起動して ANo.1で触れられていますように $LOAD_PATH でどうなりますか? そこに出力されているフォルダのどれかに ○○が入っていますよね? 次に require '○○' を入力してください。 同じように LoadError: no such file to load --○○ と出ますか?
- ki073
- ベストアンサー率77% (491/634)
require '○○' の部分を p(require '○○') に変えたらどんなメッセージが出ますか? trueかfalseが返ってくるのであればちゃんと読まれています。 LoadError: no such file to load --○○ とかだとファイルが見つからないということです。 ファイルは見つかったけど、そのファイルの中にエラーがある可能性もあります。 その場合が想定できるのでしたら、 コマンドirbを入れて、irbが起動した後に require '○○' でエラーメッセージがでますのでそれを見て対処してください。
- notnot
- ベストアンサー率47% (4900/10358)
そのrequireするファイルの性格によります。 汎用のライブラリを自分で作ったと言う場合は、置き場所は自分たち用のライブラリ置き場である C:\Ruby193\lib\ruby\site_ruby\1.9.1\ ですね。 requireするメインのプログラムと同時にしか使わないという物であれば、同じディレクトリに置いて、 require './○○' と、./ を前置します。以前のバージョンでは、カレントディレクトリのファイルをパスなしでrequire出来ましたが、セキュリティ強化のためversion1.9.2から出来なくなりました。 というのが一般論ですが、以前のバージョン用に書かれたソフトをver1.9.3で使いたいと言うことであれば、"./" をつけるという書き直しが面倒だと思うので、No1の方の回答通り、LOAD_PATH に . を含めるのが楽でしょう。もしそのソフトが、ver1.8用のソフトであればそのままでは1.9.3で動かない可能性もかなりありますので、その場合は、ver1.8.7をインストールしてください。
お礼
どれも駄目でした…。 HTMLを生成するスクリプトなのですが、一応HTML自体は生成されます。 ただ、そのコード中に○○の記述があり、そこから下が生成されていないようです。 ANo.2の方が仰っている「ファイルの性格」に問題があるのかも知れません。 もう少し悪戦苦闘してみます。 こんな曖昧な質問に詳しくお答え頂き、ありがとうございました。