summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2024-02-25 14:39:46 +0900
committergit <svn-admin@ruby-lang.org>2024-03-05 06:53:20 +0000
commite1026000afe02b57a765c40151641d480fc34e05 (patch)
treed43589cea2c51446dd3ca1654c284046bd44cc05
parent0ae0a0c1c3bb01d118c5a924d731a2b3e9774105 (diff)
[rubygems/rubygems] Use `IO.popen` to list files
- Redirect stderr `git ls-files` to null without shelling out. - When building by `gem`, `__FILE__` is the path name given in the command line, or the gemspec file name in the current directory. In that case, comparison it and expanded path never equal. Compare listed file names with the base name of `__FILE__` instead. https://github.com/rubygems/rubygems/commit/5583433dbb
-rw-r--r--lib/bundler/templates/newgem/newgem.gemspec.tt7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/bundler/templates/newgem/newgem.gemspec.tt b/lib/bundler/templates/newgem/newgem.gemspec.tt
index 51f19a5be9..6e88f4dab1 100644
--- a/lib/bundler/templates/newgem/newgem.gemspec.tt
+++ b/lib/bundler/templates/newgem/newgem.gemspec.tt
@@ -27,9 +27,10 @@ Gem::Specification.new do |spec|
# Specify which files should be added to the gem when it is released.
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
- spec.files = Dir.chdir(__dir__) do
- `git ls-files -z`.split("\x0").reject do |f|
- (File.expand_path(f) == __FILE__) ||
+ gemspec = File.basename(__FILE__)
+ spec.files = IO.popen(%w[git ls-files -z], chdir: __dir__, err: IO::NULL) do |ls|
+ ls.readlines("\x0", chomp: true).reject do |f|
+ (f == gemspec) ||
f.start_with?(*%w[bin/ test/ spec/ features/ .git <%= config[:ci_config_path] %>appveyor Gemfile])
end
end