2013-04-24 86 views
4

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

我注意到,珠宝商手动更新这个列表与项目中的文件列表。例如

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

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

end 

是否有任何证据证明使用git ls-filesDir.glob('**/*')动态生成文件列表里面使用的项目(尤其是轨道项目)宝石时的gemspec导致性能问题?例如?

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

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

end 
+0

有关这方面的消息吗? – 2014-01-19 18:54:10

回答

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,因为我不认为使用宝石每个系统将安装在其上的git。

+0

唯一需要git的系统是构建宝石的那些系统? – drewish 2016-10-01 03:08:56

+0

这是正确的。 – infused 2016-10-01 22:33:27

相关问题