当我将所有宝石放入Gemfile时,我可以使用
require 'bundler'
Bundler.require :default
加载所有宝石。现在我想使用Ruby的Std-Lib中的模块。我当然能做到
require 'fileutils'
require 'json'
[etc.]
但是大多数这些模块已经被所需的宝石加载了。所以如果我不需要它,我不会得到错误。但如果我要移除一颗宝石,这很容易改变。
有没有一种很好的方法来处理这些依赖项(除了测试)?
答案 0 :(得分:1)
似乎没有比手动找到所有需要的模块更好的方法,并且需要手动操作。
我用这个hack来查找需要的模块列表:
find -name *.rb |xargs cat |egrep -o ' [A-Z][a-zA-Z]*(\.|::)' |tr -dc A-Za-z\\n |sort |uniq |xargs -I@ -n1 egrep -o '(module|class) @' -r /usr/lib/ruby/1.9.1/* |cut -d':' -f2 |sort |uniq
它并不完美,但应涵盖大多数情况。