[#21296] test and sample directory — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
5 messages
2003/09/01
[#21325] illegal member in %w array — kkosako@...
%w配列で、継続行の先頭が空白のときに
5 messages
2003/09/04
[#21337] Re: illegal member in %w array — kkosako@...
> From: matz@ruby-lang.org [mailto:matz@ruby-lang.org]
12 messages
2003/09/04
[#21339] Re: illegal member in %w array
— matz@... (Yukihiro Matsumoto)
2003/09/04
まつもと ゆきひろです
[#21338] $SAFE=4 での autoload — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
21 messages
2003/09/04
[#21346] Re: $SAFE=4 での autoload
— nobu.nakada@...
2003/09/04
なかだです。
[#21359] Re: $SAFE=4 での autoload
— Hidetoshi NAGAI <nagai@...>
2003/09/05
永井@知能.九工大です.
[#21361] Re: $SAFE=4 での autoload
— matz@... (Yukihiro Matsumoto)
2003/09/06
まつもと ゆきひろです
[#21363] Re: $SAFE=4 でのautoload
— nobu.nakada@...
2003/09/08
なかだです。
[#21364] Re: $SAFE=4 でのautoload
— matz@... (Yukihiro Matsumoto)
2003/09/08
まつもと ゆきひろです
[#21369] ext/openssl on mswin32 — Tietew <tietew-ml-ruby-dev@...>
Tietew です。
4 messages
2003/09/10
[#21384] LocalJumpError -> ThreadError — Masatoshi Seki <m_seki@...>
12 messages
2003/09/16
[#21385] Re: LocalJumpError -> ThreadError
— matz@... (Yukihiro Matsumoto)
2003/09/16
まつもと ゆきひろです
[#21386] Re: LocalJumpError -> ThreadError
— Masatoshi Seki <m_seki@...>
2003/09/16
咳といいます。
[#21388] Re: LocalJumpError -> ThreadError
— matz@... (Yukihiro Matsumoto)
2003/09/17
まつもと ゆきひろです
[#21389] Re: LocalJumpError -> ThreadError
— m_seki@...
2003/09/17
[#21403] Building 1.8.0 on Solaris with Sun CC — Masahiro TANAKA <masa@...>
9 messages
2003/09/22
[#21405] Re: Building 1.8.0 on Solaris with Sun CC
— 桑村慎哉 <kuwa@...>
2003/09/25
桑村です。
[#21414] deferred finalizers — nobu.nakada@...
なかだです。
5 messages
2003/09/26
[#21415] 定数のスコープ — akira yamada <akira@...>
8 messages
2003/09/26
[#21416] warnの戻り値 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
8 messages
2003/09/26
[#21419] Makefile.inのlex.c — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
15 messages
2003/09/28
[#21422] Re: Makefile.inのlex.c
— matz@... (Yukihiro Matsumoto)
2003/09/28
まつもと ゆきひろです
[#21434] break from block yielded in until — Minero Aoki <aamine@...>
青木です。
13 messages
2003/09/29
[#21439] Re: break from block yielded in until
— Tietew <tietew-ml-ruby-dev@...>
2003/09/30
[#21442] Re: break from block yielded in until
— matz@... (Yukihiro Matsumoto)
2003/09/30
まつもと ゆきひろです
[ruby-dev:21336] temporary directory
From:
nobu.nakada@...
Date:
2003-09-04 07:46:56 UTC
List:
ruby-dev #21336
なかだです。
一時ファイルを使うときにはTempfileがありますが、時々一時ディレ
クトリの中でファイルを作りたい場合があります。
* lib/tempfile.rb (Tempfile.callback): support directory.
* lib/tempfile.rb (Tempfile::Dir): temporary directory class.
Index: lib/tempfile.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/tempfile.rb,v
retrieving revision 1.19
diff -u -2 -p -r1.19 tempfile.rb
--- lib/tempfile.rb 23 Jul 2003 16:37:35 -0000 1.19
+++ lib/tempfile.rb 4 Sep 2003 07:42:46 -0000
@@ -141,5 +141,11 @@ class Tempfile < SimpleDelegator
# keep this order for thread safeness
- File.unlink(path) if File.exist?(path)
+ if File.exist?(path)
+ if File.lstat(path).directory?
+ FileUtils.rm_rf(path)
+ else
+ File.unlink(path)
+ end
+ end
cleanlist.delete(path) if cleanlist
@@ -168,4 +174,57 @@ class Tempfile < SimpleDelegator
tempfile
end
+ end
+
+ def cleanlist
+ @@cleanlist
+ end
+ end
+
+ class Dir
+ @@cleanlist = []
+
+ def initialize(basename, tmpdir=Dir::tmpdir)
+ require 'fileutils'
+ n = failure = 0
+
+ begin
+ Thread.critical = true
+
+ begin
+ tmpname = sprintf('%s/%s%d.%d', tmpdir, basename, $$, n)
+ n += 1
+ end while @@cleanlist.include?(tmpname) or File.exist?(tmpname)
+
+ Dir.mkdir(tmpname, 0700)
+ rescue
+ failure += 1
+ retry if failure < MAX_TRY
+ raise "cannot generate tempdir `%s'" % tmpname
+ ensure
+ Thread.critical = false
+ end
+ @@cleanlist << tmpname
+ @tmpname = tmpname
+ @clean_proc = Tempfile.callback([tmpname, nil, @@cleanlist])
+ ObjectSpace.define_finalizer(self, @clean_proc)
+ end
+
+ # Returns the full path name of the temporary directory.
+ def path
+ @tmpname
+ end
+
+ def each(&block)
+ Dir.foreach(@tmpname, &block)
+ end
+
+ def open(basename, *modes, &block)
+ File.open(File.join(@tmpname, basename), *modes, &block)
+ end
+
+ def clear
+ FileUtils.rm_rf(@tmpname)
+ @clean_proc.call
+ ObjectSpace.undefine_finalizer(self)
end
end
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦