我正在研究某人宝石的分支,这是一个命令行工具。以下是目录结构的概述:
bin/
bin/foo
lib/
lib/foo.rb
lib/foo/bar.rb (etc)
为了测试它,我通常做这样的事情:
cd bin/
./foo <args>
但我希望能够在任何目录中使用它(就像它曾经安装过的那样)。我的问题是,如果每次都不在我的系统上安装gem就可以实现这一点。
我的第一次尝试是创建一个指向我的PATH上的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'
(编辑)
我知道测试库的正常方法(即rake test
等) - 我特别感兴趣的是使用任何目录中的脚本而不用每次更改重新安装gem(如果可能的话)