如何减少宝石的大小

Sim*_*her 1 gem ruby-on-rails

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

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

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

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

Jiř*_*šil 5

spec/在解压缩时,gem的目录超过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
Run Code Online (Sandbox Code Playgroud)

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

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

请注意,您还可以看到一个叫做变量test_filesgemspec.该变量已弃用且不执行任何操作.