2008-10-18 106 views
2

之前我創建其中有bin目錄紅寶石寶石檢測部署

  • 幾個腳本寶石
  • 的實用程序類lib目錄
  • 和多次測試的測試目錄
 
supertool 
bin 
    toolA 
    toolB 
lib 
    supertool 
    supertool.rb 
    helper.rb 
test 
    tc_main.rb 
    tc_etc.rb 

現在,爲了在我安裝gem之前運行測試,我在測試頂部有以下代碼片段:

base = File.basename(Dir.pwd) 
if base == 'test' || base =~ /supertool/ 
    Dir.chdir('..') if base == 'test' 
    $LOAD_PATH.unshift(Dir.pwd + '/lib') 
    Dir.chdir('test') if base =~ /supertool/ 
end 

雖然這似乎很乏味,特別是如果我必須將這些放在bin目錄的腳本中。有沒有更好的設置環境的方法,以便我們可以在安裝前測試寶石?我確信這是簡單的,我找不到。一個簡單的鏈接到正確的地方將有很大的幫助:)

+0

這個問題沒有意義。爲什麼你有這個習慣chdir'ing腳本? – 2008-11-03 20:09:13

回答

4

我不確定你想用這個腳本實現什麼。它似乎與寶石沒有任何關係......

是否可以在測試目錄(或基於目錄的ruby test/tc_main.rb)中運行ruby tc_main.rb,並讓它適當地設置加載路徑?如果是這樣,這裏有一個更好的方法:

在您的測試目錄中,創建一個test_helper.rb文件。在該文件中,把這個

$LOAD_PATH << File.expand_path(File.dirname(__FILE__) + '/../lib') 

而且在所有的測試文件,將第一行

require 'test_helper' 

如果你有你的測試目錄裏面的子目錄,然後文件在這些子目錄可以做

require '../test_helper' 
0

看看鋤頭寶石,它是其他寶石的幫手。