2012-07-22 87 views
0

我是新來的紅寶石,但我正在開發我的第一個紅寶石程序。它目前有兩個文件,一個是函數庫(存儲在lib中的xgync.rb),另一個是存儲在「bin」中的可執行文件xgync。 (在這裏可見的項目https://bitbucket.org/jeffreycwitt/xgync/src)我還創建了一個符號鏈接到我的/usr/local/bin/xgync,這樣我就可以在終端的任何位置編寫命令xgync {arguments}紅寶石需求不工作

問題似乎是bin/xgync取決於圖書館lib/xgync.rb。我寫這個依賴於bin/xgync如下:

$:.unshift(File.dirname(__FILE__) + '/../lib') 
require "xgync" 

不過,我不斷收到以下錯誤:

/Users/JCWitt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- xgync (LoadError) 
from /Users/JCWitt/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
from /usr/local/bin/xgync:4:in `<main>' 

你可以看到什麼毛病我已經寫了什麼?這個符號鏈接是不是可以搞砸了?

感謝您的幫助:)

回答

7

當使用紅寶石1.9.x的在你的項目需要的其他文件時,你通常不會改變與$:.unshift的路徑。

取而代之的是最好的做法是使用require_relative

require_relative '../lib/xgync.rb' 

require_relative需要相對於當前正在編輯的文件的文件。

但遇到錯誤出現,因爲你需要一個文件,該文件不存在:

  • 斌/ xgync
  • 的lib/xgync.rb

這些是根據您的問題在您的項目中的文件,並且代碼摘錄來自bin/xgync您擴展路徑以查找文件在lib/但你試圖require 'xgync'這是一個文件,這是不存在於lib/,所以如果你想使用這種方法(而不是require_relative,你將不得不使用require 'xgync.rb'

+1

成功與'require_relative'路徑!謝謝。感謝您的解釋。 – Jeff 2012-07-22 12:31:20