我在閱讀「Programming Ruby 1.9」。在208頁(在「在何處放置測試」一節),這本書具有組織爲在編程Ruby 1.9中需要文件和加載路徑的問題
roman
lib/
roman.rb
other files...
test/
test_roman.rb
other_tests...
other stuff
代碼,並詢問我們如何讓我們的test_roman.rb
文件,以瞭解roman.rb
文件。
它說,不工作一個選項是構建的路徑進入測試代碼require
聲明:
# in test_roman.rb
require 'test/unit'
require '../lib/roman'
相反,它認爲更好的解決方案是應用程序的所有其他組件假設應用程序的頂級目錄是Ruby的負載路徑,使得測試代碼必須
# in test_roman.rb
require 'test/unit'
require '/lib/roman'
,我們會通過調用ruby -I path/to/app path/to/app/test/test_roman.rb
運行測試。
我的問題是:這是真的最好的方法嗎?好像
- 如果我們只是在與
require_relative '../lib/roman'
第一個選項替換require '../lib/roman'
,一切都將正常工作。 - 第二個選項(所有組件都具有Ruby的加載路徑中的頂級目錄)中的假設僅適用,因爲我們通過了
-I path/to/app
參數,這看起來有點雜亂。
我糾正,用require_relative
代替require
修復了所有問題嗎?無論如何,是否有理由更喜歡第二個選項?