为什么要从 gemspec 文件中排除测试?
Why exclude tests from gemspec files?
Bundler's gemspec template 提供以下作为指定 gems 文件的默认值:
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
许多其他(看似无关的)文件,如 .gitignore 和 .travis.yml 文件将被包括在内,那么为什么要排除测试?
我也见过 other high-profile gems 忽略测试文件。
除了保存关于 gem 的任意元数据之外,Gem 规范做的一件重要事情是告诉 Rubygems 构建您的 gem.
我认为 Bundler 建议排除测试,因为它们不是构建 gem 或 运行 所需的功能代码。在 Ruby 宇宙中包含每个 Gem 的每个测试套件将是昂贵的。没有令人信服的理由需要从您的应用程序中访问 Omniauth 的测试。
测试很重要,这就是它们作为存储库的一部分存在的原因。它们在生产中不是必需的,因此它们不会包含在您从 Rubygems.
下载的包中
至于.gitignore
和.travis.yml
可以自行排除。我不认为 Bundler 团队试图考虑所有情况,只是考虑最有可能的情况。
Bundler's gemspec template 提供以下作为指定 gems 文件的默认值:
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
许多其他(看似无关的)文件,如 .gitignore 和 .travis.yml 文件将被包括在内,那么为什么要排除测试?
我也见过 other high-profile gems 忽略测试文件。
除了保存关于 gem 的任意元数据之外,Gem 规范做的一件重要事情是告诉 Rubygems 构建您的 gem.
我认为 Bundler 建议排除测试,因为它们不是构建 gem 或 运行 所需的功能代码。在 Ruby 宇宙中包含每个 Gem 的每个测试套件将是昂贵的。没有令人信服的理由需要从您的应用程序中访问 Omniauth 的测试。
测试很重要,这就是它们作为存储库的一部分存在的原因。它们在生产中不是必需的,因此它们不会包含在您从 Rubygems.
下载的包中至于.gitignore
和.travis.yml
可以自行排除。我不认为 Bundler 团队试图考虑所有情况,只是考虑最有可能的情况。