更新gemspec文件列表的最佳做法是什么?

时间:2013-04-24 22:15:48

标签: ruby-on-rails ruby rubygems gem gemspecs

关于gemspecs的文件列表。

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

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

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

end

是否有任何证据表明使用git ls-filesDir.glob('**/*')动态生成gemspec的文件列表会导致在项目中使用gem时出现性能问题(特别是rails项目)? e.g?

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

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

end

1 个答案:

答案 0 :(得分:1)

完全可以动态生成文件列表。事实上,Gemspec Specification docs显示了几种方法。

来自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" }

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