summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2024-02-25 17:14:52 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2024-02-26 15:56:28 +0900
commitdddf62426b7a384715dd558773723ecbdfa37a11 (patch)
tree1c765c52d3394c80a313d82660f63c3d99358c23 /lib
parent38e3ad267569f38336458d461791b4a1cd79b5d1 (diff)
[ruby/tempfile] Use `IO.popen` to list files
- Redirect `git ls-files` 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/ruby/tempfile/commit/ac5bab8c7a
Diffstat (limited to 'lib')
-rw-r--r--lib/tempfile.gemspec7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/tempfile.gemspec b/lib/tempfile.gemspec
index efbca0bda7..0b4c6cc886 100644
--- a/lib/tempfile.gemspec
+++ b/lib/tempfile.gemspec
@@ -22,9 +22,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 2>#{IO::NULL}`.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 Gemfile])
end
end