如何减少宝石的大小

时间:2014-08-28 08:24:17

标签: ruby-on-rails gem

我目前正在创建一个宝石,它似乎比比较宝石大得多。

首先,这是一个真正的问题,如果是这样,有一种减少宝石大小的特殊方法吗?

宝石:https://rubygems.org/gems/roroacms

Github:https://github.com/roroacms/roroacms

1 个答案:

答案 0 :(得分:5)

gem的spec/目录在解压缩时超过99MB。你绝对应该将它从最终的宝石中排除(即使很小)。它之所以如此庞大,是因为它包含了仍然存在log/(80MB)和tmp/(18MB)目录的虚拟应用程序。

排除文件的方式是files中的gemspec变量。该变量包含将放入构建gem中的每个文件的数组。

Gem::Specification.new do |gem|
    gem.files = `git ls-files`.split($/).reject { |fn| fn.start_with? "spec" }
    ...
end

代码将首先获取目录中每个文件的列表(git ls-files它还将应用.gitignore中的规则),然后删除路径以spec开头的所有文件

是否要将测试包含在最终的gem中,取决于您。问题是没有一种简单的方法来运行测试。曾经有一个选项(-t)可以通过Rubygems直接执行,但该选项已经被删除了很久。鉴于这种情况,我认为将测试保存在存储库中可能是最好的。

请注意,您可能还会在test_files中看到名为gemspec的变量。该变量已弃用且不执行任何操作。