2009-11-24 48 views
0

是否有可能通过为任何缺少的包含添加自动下载和安装代码来重写默认的“require”(假设缺少的包含作为ruby gem发布)。Ruby:准时制宝石安装?

在Ruby没有与shell进行接口的情况下,哪种方法无效。但我仍然认为这将是一个有趣的想法。

今天有没有这样的机制?

编辑:
删除了关于密码检查的部分。我刚刚检查和gem install似乎并不需要我输入密码。

回答

1

您将能够劫持require方法,以便在试图对require进行尝试时安装宝石,但仍然无法访问当前进程中新安装的gem,因为gem索引必须重新加载。

我明白意图,但我认为锻炼可能不值得。

0

安装新鲜宝石时,宝石将安装在GEM_HOME中。如果这不是可写的,那么它将尝试在用户的目录.gem目录(至少在* NIX)。

你当然可以编写脚本。在某种程度上,Rail的rake gems:build就是这样。只是不需要。

但是,我会建议对此。您可能会遇到构建,版本控制,依赖性和网络问题。也可能是安全问题。

PS:Francis Hwang前段时间做了一些相关的事情,虽然只是作为一种要求,而不是一个要求的宝石。

http://fhwang.net/2005/11/01/urirequire-I-got-yer-Web-2-0-right-here

0

一个更好的选择是使用bundler和分发所需的宝石与应用。

这也是相当简单写一个脚本来引导宝石的安装,如果你没有 希望他们与你的代码发布(使用捆绑安装/检查命令)