2011-07-12 124 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