Gem.bin_path('cucumber', 'cucumber')
将返回二进制/可执行文件的路径.
/home/hedge/.rvm/gems/ruby-1.9.2-p136@bbb-bdd-meta-bdd/gems/cucumber-0.10.0/lib
我是否错过了什么,或者有没有一种简单/单一的方法来获取这些信息?
更新:请不要提供CLI或非stdlib建议.
Gem.bin_path('cucumber', 'cucumber')
将返回二进制/可执行文件的路径.
/home/hedge/.rvm/gems/ruby-1.9.2-p136@bbb-bdd-meta-bdd/gems/cucumber-0.10.0/lib
我是否错过了什么,或者有没有一种简单/单一的方法来获取这些信息?
更新:请不要提供CLI或非stdlib建议.
判断答案的问题是,你必须"要求"rubygem,否则它将无法工作.这通常是不可取的,因为如果您使用的是可执行gem,您不想"要求"它,否则会收到一系列警告.
这是可执行文件和LIB的通用解决方案:
spec = Gem::Specification.find_by_name("cucumber")
gem_root = spec.gem_dir
gem_lib = gem_root + "/lib"
如果你想要真正的技术化,这里并不是只有一个lib目录.gempec有一个"require_PATH"数组,包含所有要搜索的目录(添加到$LOAD_PATH).所以,如果您想要一组require_路径,请使用以下命令:
gem_lib = gem_root + "/" + spec.require_paths[0]
不需要Bundle 机.