実行可能な foo.rb があり、ライブラリ bar.rb が次のように配置されているとします。
<root>/bin/foo.rb
<root>/lib/bar.rb
foo.rb のヘッダーに、bar.rb に機能を組み込むために次の require を配置します。
require File.dirname(__FILE__)+"../lib/bar.rb"
foo.rb へのすべての呼び出しが直接である限り、これは正常に機能します。たとえば、$HOME/project と foo.rb のシンボリック リンクを に配置すると$HOME/usr/bin
、 に
解決されるため、 のディレクトリ名に関連し__FILE__
$HOME/usr/bin/foo.rb
て見つけることができません。bar.rb
foo.rb
rubygems などのパッケージング システムは、ライブラリを検索する名前空間を作成することでこれを修正することを認識してい$:
ます$HOME/project/lib
。この問題の経験があり、有用な解決策やレシピを見つけた人はいますか?