Ruby on rails 如何缩小宝石的尺寸

Ruby on rails 如何缩小宝石的尺寸,ruby-on-rails,gem,Ruby On Rails,Gem,我目前正在创建一个宝石,它似乎比比较宝石大得多 首先,这真的是一个问题吗?如果是的话,有没有特别的方法来缩小创业板的规模 宝石: Github:解包后,gem的spec/目录超过99MB。你一定要把它排除在最后的宝石之外,即使它很小。它之所以如此大,是因为它包含的虚拟应用程序仍然存在log/80MB和tmp/18MB目录 排除文件的方式是通过gempec中的files变量。该变量保存将放入构建gem的每个文件的数组 Gem::Specification.new do |gem| gem.

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

首先,这真的是一个问题吗?如果是的话,有没有特别的方法来缩小创业板的规模

宝石:

Github:

解包后,gem的spec/目录超过99MB。你一定要把它排除在最后的宝石之外,即使它很小。它之所以如此大,是因为它包含的虚拟应用程序仍然存在log/80MB和tmp/18MB目录

排除文件的方式是通过gempec中的files变量。该变量保存将放入构建gem的每个文件的数组

Gem::Specification.new do |gem|
    gem.files = `git ls-files`.split($/).reject { |fn| fn.start_with? "spec" }
    ...
end
代码将首先获取目录中包含git ls文件的每个文件的列表,它还将应用.gitignore中的规则,然后删除路径以spec开头的任何文件

这取决于您是否希望在最终的gem中包含测试。问题是没有一种简单的方法来运行测试。过去有一个选项-t可以直接通过Rubygems实现,但这个选项在很久以前就被删除了。考虑到这种情况,我认为最好将测试保存在存储库中

注意,您可能还会在gempec中看到一个名为test_files的变量。该变量已弃用,不起任何作用

gem的spec/目录解包时超过99MB。你一定要把它排除在最后的宝石之外,即使它很小。它之所以如此大,是因为它包含的虚拟应用程序仍然存在log/80MB和tmp/18MB目录

排除文件的方式是通过gempec中的files变量。该变量保存将放入构建gem的每个文件的数组

Gem::Specification.new do |gem|
    gem.files = `git ls-files`.split($/).reject { |fn| fn.start_with? "spec" }
    ...
end
代码将首先获取目录中包含git ls文件的每个文件的列表,它还将应用.gitignore中的规则,然后删除路径以spec开头的任何文件

这取决于您是否希望在最终的gem中包含测试。问题是没有一种简单的方法来运行测试。过去有一个选项-t可以直接通过Rubygems实现,但这个选项在很久以前就被删除了。考虑到这种情况,我认为最好将测试保存在存储库中


注意,您可能还会在gempec中看到一个名为test_files的变量。该变量已弃用,不起任何作用

你和另一个rails cms比较过吗?我想说的是,大小不是问题。它只在服务器启动时加载,而不是在响应中向任何人提供。然而,对于您正在做的事情,总是值得更多地了解:您是否与另一个rails cms(如refinery)进行了比较?我想说,大小不是问题。它只在服务器启动时加载,而不是在响应中向任何人提供。然而,对于你正在做的事情,了解更多总是值得的:是的,这非常有意义。我认为在gem中保持测试是一个很好的实践?如果不是这样,那么我可以删除它们,忽略gem中的文件的最佳方式是什么?@user2323463我已经扩展了答案。我想这不再需要了,因为新引擎似乎只包含一行相关文件:gem::Specification.new do | s | `s.files=Dir['{app,config,db,lib}/**/*“,”MIT-LICENSE“,”Rakefile“,”README.md“]`是的,这很有道理。我认为在gem中保持测试是一个很好的实践?如果不是这样,那么我可以删除它们,忽略gem中的文件的最佳方式是什么?@user2323463我已经扩展了答案。我想这不再需要了,因为新引擎似乎只包含一行相关文件:gem::Specification.new do | s | `s.files=Dir['{app,config,db,lib}/**/*“,”MIT-LICENSE“,”Rakefile“,”README.md“]`