From 287c5da4aae6a3c8ae16cde590a9eb6d4dd655bf Mon Sep 17 00:00:00 2001 From: Peter Vandenberk Date: Tue, 20 Sep 2022 08:53:39 +0100 Subject: [PATCH] [ruby/tmpdir] Make `Dir.tmpdir` more idiomatic and functional Use `Enumerable#find` to iterate over the candidates, not `Enumerable.each`. (this makes the code more functional, and - IMO - slightly more idiomatic, as it avoids setting the "global" (by which I mean: non-local) `tmp` variable from inside the block) https://github.com/ruby/tmpdir/commit/d1f20ad694 --- lib/tmpdir.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/tmpdir.rb b/lib/tmpdir.rb index 6e47ac4fc7..3e76a8f5c3 100644 --- a/lib/tmpdir.rb +++ b/lib/tmpdir.rb @@ -19,8 +19,7 @@ class Dir # Returns the operating system's temporary file path. def self.tmpdir - tmp = nil - ['TMPDIR', 'TMP', 'TEMP', ['system temporary path', @@systmpdir], ['/tmp']*2, ['.']*2].each do |name, dir = ENV[name]| + tmp = ['TMPDIR', 'TMP', 'TEMP', ['system temporary path', @@systmpdir], ['/tmp']*2, ['.']*2].find do |name, dir = ENV[name]| next if !dir dir = File.expand_path(dir) stat = File.stat(dir) rescue next @@ -32,8 +31,7 @@ class Dir when stat.world_writable? && !stat.sticky? warn "#{name} is world-writable: #{dir}" else - tmp = dir - break + break dir end end raise ArgumentError, "could not find a temporary directory" unless tmp