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 机.

Ruby相关问答推荐

在 Ruby 中导出环境变量

如何使用 capybara + cucumber 断言 ruby​​ 中的 html 表行数

如何按长度对 Ruby 字符串数组进行排序?

如何使用 if..else 块的结果分配变量?

Rails 控制台中没有数据库连接

Vim 用 ruby​​ 语法高亮显示很慢

如何从最后一个元素开始遍历数组?

如何在 ruby​​ 中针对正则表达式测试整个字符串?

class_eval、class_exec、module_eval 和 module_exec 有什么区别?

如何仅从 Gemfile 中查看依赖关系树?

如何在 ruby​​ 中解压缩 Gzip 字符串?

如何获取当前 rake 任务的 PID?

Ruby 中的超级关键字

在 Ruby 中打开默认浏览器

如何理解 strptime 与 strftime

获取当前 ruby​​ 进程内存使用情况

Array.empty 的相反方法是什么?或 [].empty?在Ruby中

检索/列出 Redis 数据库中的所有键/值对

为什么 Ruby 有 TrueClass 和 FalseClass 而不是一个布尔类?

JavaScript Array:获取项目的范围