電子書籍の厳選無料作品が豊富!

プログラミングの知識はほぼ皆無なのですが、仕事でRUBYを使わなければならなくなり、オープンソースを弄っているところです。

rbファイルの記述に

require '○○'

とあるのですが、判らなかったので無視して実行してみたところ、

C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot loa
d such file -- ○○ (LoadError)
from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require
'
from makeindex.rb:2:in `<main>'

というエラーが出ました。

○○ファイルを色々なディレクトリに置いてみたのですが、どれも同じエラーでした。
一般的に、○○ファイルは何処に置くべきなのでしょうか。

尚、環境は以下の通りです。
WindowsXP
RUBY 1.9.3
「require '○○'」の記述があるrbファイルの場所 c:\a
rbファイルはカレントディレクトリをaにしてから実行

プログラマーの方からすれば意味不明な質問かも知れませんが、ネットで調べてみてもさっぱり判らなかったので質問させて頂きました。
宜しくお願いします。

A 回答 (5件)

カレントディレクトリがロード対象のパスから外れているようですね。



1.○○.rbをスクリプトファイルと同じ場所に置いた場合は、オプションでカレントディレクトリを追加する
> ruby -I. foo.rb


2.スクリプトファイル内でパスを追加する
$LOAD_PATH.push('.') # この行をrequreの前に追加
require '○○'


3.あるいは既に定義されているパスに○○.rbを置くとか
パスの確認は以下でできます。
> ruby -r pp -e"pp $LOAD_PATH"


こんな感じでどうでしょうか。
    • good
    • 1
この回答へのお礼

どれも駄目でした…。
HTMLを生成するスクリプトなのですが、一応HTML自体は生成されます。
ただ、そのコード中に○○の記述があり、そこから下が生成されていないようです。
ANo.2の方が仰っている「ファイルの性格」に問題があるのかも知れません。
もう少し悪戦苦闘してみます。

こんな曖昧な質問に詳しくお答え頂き、ありがとうございました。

お礼日時:2011/11/18 10:11

たびたびすみません。



確認事項ですが、require '○○'
が仮に
require 'abc'
だとすると
ファイル名はabc.rbと拡張子がrbになっていますよね。
それとそのファイルをテキストエディタで読み込み可能で、rubyで書かれていますのね。
(バイナリだと違う拡張子になります)
    • good
    • 0

ANo.3の続きですが、


ANo.1とANo.2をやったけども駄目だったという解釈での回答です。

質問を見ますと、makeindex.rbでエラーが出ていますので
require '○○'
はmakeindex.rbにあるコマンドですよね??

まず irbを起動して
ANo.1で触れられていますように
$LOAD_PATH
でどうなりますか?
そこに出力されているフォルダのどれかに ○○が入っていますよね?

次に
require '○○'
を入力してください。
同じように
LoadError: no such file to load --○○
と出ますか?
    • good
    • 0

require '○○'


の部分を
p(require '○○')
に変えたらどんなメッセージが出ますか?
trueかfalseが返ってくるのであればちゃんと読まれています。
LoadError: no such file to load --○○
とかだとファイルが見つからないということです。
ファイルは見つかったけど、そのファイルの中にエラーがある可能性もあります。

その場合が想定できるのでしたら、
コマンドirbを入れて、irbが起動した後に
require '○○'
でエラーメッセージがでますのでそれを見て対処してください。
    • good
    • 1

その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をインストールしてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!