2011-07-12 170 views
2

我正在研究一個命令行實用程序的某人的寶石分支。這裏的目錄結構的總體概述:Gem開發工作流程

bin/ 
bin/foo 

lib/ 
lib/foo.rb 
lib/foo/bar.rb (etc) 

爲了測試它,我常做這樣的事情:

cd bin/ 
./foo <args> 

但我希望能夠用它從任何目錄(像它會一次安裝)。我的問題是,如果可以實現這一點,而無需每次在我的系統上安裝gem。

我在這第一次嘗試創建符號鏈接foo腳本,這是對我的路徑,但這個食堂在腳本中的require 'foo'線以來File.dirname(__FILE__)現指到哪裏符號鏈接創建。

有沒有這樣做的常見方法?

(哦,這裏是從foo腳本中的相關行)

#!/usr/bin/env ruby 

$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib') 
require 'rubygems' 
require 'foo' 

(EDIT)

我所知道的測試庫的正常方式(即rake test等) - - 我特別感興趣的是使用任何目錄中的腳本,而不必在每次更改時重新安裝gem(如果可能)。

+0

爲了測試你有rspec/test :: unit/cucumber/etc。一旦這些測試是「綠色」,安裝寶石並測試你自己。如果你堅持自己的方式,可以將文件的位置添加到路徑中,而不是符號鏈接。 – Jakobinsky

+0

(看丹尼斯的回答評論) – mportiz08

+0

@ mportiz08你們每個人都找到了一種方法來做到這一點? – blackjid

回答

0

在我看過的幾乎所有的寶石中,都有一些rakefile。在這種情況下,你去寶石的根源,並去:

rake test 

對於任務列表,使用方法:安裝在首位

rake -T 

(這裏假設你有rake,顯然:gem install rake如果不是。)

此外,許多寶石還具有gemfile。在這種情況下,您可以使用bundler來安裝適用的依賴項(特別是測試套件和與開發相關的gem)。

+1

我很熟悉Rake和Bundler,但我對運行單元測試不感興趣 - 我是在實際使用命令行腳本之後 - 具體地說,如何從任何目錄使用它,而無需執行gem install增量更改後(如果可能)。 – mportiz08