想象一下,你有一個可執行foo.rb,與bar.rb以下方式奠定了圖書館查找相關庫:使用符號連接時,紅寶石可執行文件
<root>/bin/foo.rb
<root>/lib/bar.rb
在您將foo.rb的頭以下要求在bar.rb中引入功能:
require File.dirname(__FILE__)+"../lib/bar.rb"
只要所有對foo.rb的調用都是直接的,這就可以正常工作。如果將$ HOME/project和$符號鏈接foo.rb放入$HOME/usr/bin
,則
解析爲__FILE__
$HOME/usr/bin/foo.rb
,因此無法找到與foo.rb
的dirname相關的bar.rb
。
我意識到,包裝系統等的RubyGems通過創建一個命名空間搜索庫解決這個問題,而且還可以使用$:
包括$HOME/project/lib
調整LOAD_PATH,但它好像一個更簡單的解決方案應存在。有沒有人有過這個問題的經驗,並找到一個有用的解決方案或配方?
這絕對更好,至少它只是兩條線。仍然不幸的是,沒有單一的解決方案。 – dgtized 2009-12-18 00:23:20