From: Shin'ya Adzumi Date: 2001-07-12T13:44:25+09:00 Subject: [ruby-list:30615] Re: ライブラリから別のライブラリを呼び出すときのパスについて あづみです。 keiichi matsunaga wrote: > 3) ライブラリを./libディレクトリに移動 > 以下のように書く必要がある? > test.rb > ------- > require './lib/foo.rb' #...(1) > ... > > foo.rb > ------- > require './lib/bar.rb' #...(2) > ... > (1) は実行スクリプトからの相対パスになるということで分かりますが, > (2) がよく分かりません。ライブラリは自分のいるところからの相対で別ライ > ブラリを読み込んでいるのではないのですね。 require A って open(A,'r'){|f| eval(f.read) } みたいなもの(なんて書くと むちゃくちゃ突っ込まれそうだけど)なので、ライブラリの位置は全然関係ない です。 > 番外)RUBYLIBを使う 番外とありますけど、これって正しい方法だと思いますよ^^; >  環境変数RUBYLIBをセットすると全てrequire 'foo',require 'bar'でうま > くいったのですが,これをcgiスクリプトとして動作させるとまたエラーにな > ります。cgiとして動作しているときはRUBYLIBは参照されないんでしょうか。 > それも変なので僕が何か重大な勘違いをしているような気がします。 httpd を動かしているユーザと RUBYLIB を設定しているユーザが別だからじゃ ないでしょうか(普通は別です)。 実行する cgi を sh スクリプトかなんかでくるんで、その中で RUBYLIB を設 定するようにすると解決できるかもしれません。 ↓こんな感じ。 #! /bin/sh RUBYLIB=ライブラリの位置 export RUBYLIB ruby test.rb 安積伸弥 adzumi@denpa.org