diff --git a/lib/tempfile.rb b/lib/tempfile.rb index 0d3c2a3901..64441511fe 100644 --- a/lib/tempfile.rb +++ b/lib/tempfile.rb @@ -122,7 +122,7 @@ class Tempfile < DelegateClass(File) # # If Tempfile.new cannot find a unique filename within a limited # number of tries, then it will raise an exception. - def initialize(basename, tmpdir=nil, mode: 0, **opts) + def initialize(basename, tmpdir=nil, mode: 0, **options) if block_given? warn "Tempfile.new doesn't call the given block." end @@ -130,7 +130,7 @@ class Tempfile < DelegateClass(File) @clean_proc = Remover.new(@data) ObjectSpace.define_finalizer(self, @clean_proc) - ::Dir::Tmpname.create(basename, tmpdir, opts) do |tmpname, n, opts| + ::Dir::Tmpname.create(basename, tmpdir, options) do |tmpname, n, opts| mode |= File::RDWR|File::CREAT|File::EXCL opts[:perm] = 0600 @data[1] = @tmpfile = File.open(tmpname, mode, opts) @@ -347,9 +347,9 @@ end # ... do something with f ... # end # -def Tempfile.create(basename, tmpdir=nil, mode: 0, **opts) +def Tempfile.create(basename, tmpdir=nil, mode: 0, **options) tmpfile = nil - Dir::Tmpname.create(basename, tmpdir, opts) do |tmpname, n, opts| + Dir::Tmpname.create(basename, tmpdir, options) do |tmpname, n, opts| mode |= File::RDWR|File::CREAT|File::EXCL opts[:perm] = 0600 tmpfile = File.open(tmpname, mode, opts) diff --git a/lib/tmpdir.rb b/lib/tmpdir.rb index 0b21f00d8e..7bd99e1fbb 100644 --- a/lib/tmpdir.rb +++ b/lib/tmpdir.rb @@ -105,21 +105,12 @@ class Dir Dir.tmpdir end - def make_tmpname(prefix_suffix, n) - case prefix_suffix - when String - prefix = prefix_suffix - suffix = "" - when Array - prefix = prefix_suffix[0] - suffix = prefix_suffix[1] - else - raise ArgumentError, "unexpected prefix_suffix: #{prefix_suffix.inspect}" - end + def make_tmpname((prefix, suffix), n) t = Time.now.strftime("%Y%m%d") path = "#{prefix}#{t}-#{$$}-#{rand(0x100000000).to_s(36)}" path << "-#{n}" if n - path << suffix + path << suffix if suffix + path end def create(basename, tmpdir=nil, max_try: nil, **opts) diff --git a/test/test_tempfile.rb b/test/test_tempfile.rb index 61457e4138..eb61120b69 100644 --- a/test/test_tempfile.rb +++ b/test/test_tempfile.rb @@ -1,5 +1,6 @@ require 'test/unit' require 'tempfile' +require 'thread' require_relative 'ruby/envutil' class TestTempfile < Test::Unit::TestCase