lib中的Ruby宝石 - 备胎原理

时间:2010-05-09 16:24:00

标签: ruby console rubygems

我正在使用控制台ruby应用程序(而不是rails!)我将在多台机器上安装此应用程序。我想知道是否有一种方法可以构建它所以我没有必要安装我在每台机器上用于应用程序的宝石。我希望能够将目录复制到每台机器并运行它。理想情况下,我想把宝石放在lib文件夹或其他东西,并从那里引用它们,所以我甚至不必在我的开发机器上安装它们。有没有办法做到这一点?

在.net中,我们称之为“备胎”原则。

感谢, 克雷格

2 个答案:

答案 0 :(得分:2)

如何使用bundler

然后你可以包含一个指定所有必要宝石的Gem文件,并在每台机器上运行“bundle install”来拉下它们。

如果您真的想将它们与应用程序运行"bundle package"捆绑在一起,那么宝石将存储在供应商/缓存中。

答案 1 :(得分:1)

你可以采用与rails允许相同的方法,并且“供应商”你的宝石。这涉及创建一个新目录(rails使用vendor / gems)并使用gem unpack将gem解压缩到此目录中。

然后,您可以将加载路径配置为包含其下的所有子文件夹。

修改

您可以通过执行类似

的操作来配置加载路径
Dir.glob(File.join("vendor", "gems", "*", "lib")).each do |lib|
  $LOAD_PATH.unshift(File.expand_path(lib))
end