4

关于 gemspecs 的文件列表。

我注意到珠宝商使用项目中的文件列表手动更新此列表。例如

Gem::Specification.new do |s|
  # stuff

  s.files = [
    "lib/somegem.rb",
    "README.md"
  ]
  # ... more stuff

end

是否有任何证据表明在项目(尤其是 Rails 项目)中使用 gem 时,使用git ls-filesDir.glob('**/*')动态生成 gemspec 的文件列表会导致性能问题?例如?

Gem::Specification.new do |s|
  # stuff

  s.files = `git ls-files`.split("\n")
  # ... more stuff

end
4

1 回答 1

1

动态生成文件列表非常好。事实上,Gemspec 规范文档展示了几种方法来做到这一点。

来自 Rubygems 文档:

require 'rake'
spec.files = FileList['lib     .rb',
                      'bin/*',
                      '[A-Z]*',
                      'test/   *'].to_a

# or without Rake...
spec.files = Dir['lib/   *.rb'] + Dir['bin/*']
spec.files += Dir['[A-Z]*'] + Dir['test/**/*']
spec.files.reject! { |fn| fn.include? "CVS" }

我会坚持上面的方法而不是 use git ls-files,因为我不会假设每个使用 gem 的系统都会安装 git 。

于 2014-06-27T17:40:48.513 回答