我需要冻结两个宝石,让我的项目从项目文件夹中引用那些宝石。
我知道在Rails中有很多方法可以做到,但我如何在Ruby中手动完成呢?
我根据上一个问题“jeweler”中的建议使用Starting a Ruby project: github + build tool。
答案 0 :(得分:2)
您可以独立于rubygems基础架构使用它们,首先将每个gem解压缩到vendor / gems(或项目中的任何路径):
cd yourapp
mkdir -p vendor/gems
cd vendor/gems
gem unpack gem1
gem unpack gem2
[etc.]
...然后将所有冻结的宝石的lib目录添加到您的加载路径中:
$:.unshift(*Dir[File.dirname(__FILE__) + "/vendor/gems/**/lib"])
答案 1 :(得分:0)
使用Bundler怎么样?你可以简单地用它来锁定你的应用程序宝石。
答案 2 :(得分:0)
我的第一个建议也是使用Bundler并锁定你的包。如果你想用它来分发宝石,你甚至可以把它放在你的应用程序目录中,但如果gem包含一个带有本机代码的扩展并且你将它分发到另一个平台,这可能会导致问题。
顺便说一句,Rails 3专门使用Bundler进行gem管理。在Rails 3中将不再有rake rails:freeze:gems
。
作为另一种选择,如果您由于某种原因不想使用Bundler,您可以手动将gem的lib目录放到应用程序中lib目录的某个子目录中,将其添加到您的加载路径并要求它手动。如果gem包含没有任何扩展名的纯Ruby代码,这可能会很好,但由于您需要手动进行更新,因此很难维护。