2013-04-28 23 views
2

当我把我所有宝石中的Gemfile我可以只使用 如何处理与Bundler + Gems的Std-Lib依赖关系?

require 'bundler' 
Bundler.require :default 

加载所有的宝石。现在我想使用Ruby的Std-Lib中的模块。当然,我可以做

require 'fileutils' 
require 'json' 
[etc.] 

但大多数这些模块由所需的宝石都已经加载。所以如果我不需要它们,我不会收到错误。但是如果我去掉宝石,这很容易改变。

有没有一种很好的方式来处理这些依赖关系(除了测试)?

+1

明确要求它们。不要依靠你的宝石来为你做我。 – Linuxios 2013-04-28 20:35:43

+0

好的,但我怎么知道哪些需要?我必须查找所有模块吗?例如:'File'在Core中,不需要,但'FileUtils'在StdLib中并且必须被需要。 – xato 2013-04-28 20:44:32

+0

这并不难。只要看看它。 – Linuxios 2013-04-28 20:45:10

回答

1

好像没有比找出所有需要的模块手动并需要手动更好的方法。

我用这个黑客找到需要被需要的模块列表:

find -name *.rb |xargs cat |egrep -o ' [A-Z][a-zA-Z]*(\.|::)' |tr -dc A-Za-z\\n |sort |uniq |xargs [email protected] -n1 egrep -o '(module|class) @' -r /usr/lib/ruby/1.9.1/* |cut -d':' -f2 |sort |uniq 

它并不完美,但应包括大多数情况。