# Dir.mktmpdir for 1.8

**URL:** <https://www.ruby-forum.com/t/dir-mktmpdir-for-1-8/112347>\
**Category:** Development\
**Created:** [August 17, 2007, 7:09pm UTC](https://www.ruby-forum.com/t/dir-mktmpdir-for-1-8/112347 "2007-08-17T19:09:19Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [August 17, 2007, 7:09pm UTC](https://www.ruby-forum.com/t/dir-mktmpdir-for-1-8/112347/1 "2007-08-17T19:09:19Z")

</div>

Dir.mktmpdir e$B$re(B 1.8 e$B$KF~$l$?$$$s$G$9$,!"$I$&$G$7$g$&e(B?

e$B$=$l$O$=$l$H$7$F!"e(B1.8 e$B$G5!G=3HD%$9$k$K$OC/$NN;2r$rF@$l$P$$$$e(B  
e$B$s$G$7$?$C$1e(B?

NEWS e$B$r=q$/$H$$$&$N$O3P$($F$$$k$s$G$9$,!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [August 18, 2007, 2:50am UTC](https://www.ruby-forum.com/t/dir-mktmpdir-for-1-8/112347/2 "2007-08-18T02:50:04Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:31462] Dir.mktmpdir for 1.8”  
on Sat, 18 Aug 2007 02:07:36 +0900, Tanaka A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
writes:

|Dir.mktmpdir e$B$re(B 1.8 e$B$KF~$l$?$$$s$G$9$,!"$I$&$G$7$g$&e(B?

e$B;d$OH?BP$7$^$;$s!#e(B

|e$B$=$l$O$=$l$H$7$F!"e(B1.8 e$B$G5!G=3HD%$9$k$K$OC/$NN;2r$rF@$l$P$$$$e(B  
|e$B$s$G$7$?$C$1e(B?

e$B@UG$\<T$Oe(Bknue$B$5$s$G$9$M!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [August 18, 2007, 2:43pm UTC](https://www.ruby-forum.com/t/dir-mktmpdir-for-1-8/112347/3 "2007-08-18T14:43:55Z")

</div>

In article [E1IMCUq-00083X-Uo@x31](mailto:E1IMCUq-00083X-Uo@x31),  
Yukihiro M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> |e$B$=$l$O$=$l$H$7$F!"e(B1.8 e$B$G5!G=3HD%$9$k$K$OC/$NN;2r$rF@$l$P$$$$e(B  
> |e$B$s$G$7$?$C$1e(B?
> 
> e$B@UG$\<T$Oe(Bknue$B$5$s$G$9$M!#e(B

e$B5nG/$+$i$Ne(B knu e$B$5$s$N%a!\<%k$r$5$i$C$F!"e(B[ruby-dev:29919]  
(e$B$He(B [ruby-dev:29979]) e$B$rFI$\_D\>$7$?7k2L!"e(B

- e$B8=:\_e(B 1.8 e$B$OE`7kCf$G$J$/!"e(B
- e$BDI2C$J$N$G\>e0L8\_49$G!"e(B
- trunk e$B$K$O$9$G$KF~$C$F$$$F!"e(B
- e$B$$$^$N$H$3$mH?BP0U8+$b$J$$!"e(B  
e$B$N$G!"F~$l$^$7$?!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [August 21, 2007, 10:33am UTC](https://www.ruby-forum.com/t/dir-mktmpdir-for-1-8/112347/4 "2007-08-21T10:33:34Z")

</div>

In article [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
“Akinori MUSHA” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> e$B!!%V%i%s%A%]%j%7!\<$K5-:$N\>r7o$rK~$?$7$F$$$l$P$h$/!“E`7k4|4V30$Ke(B  
> e$B;d$+$i8DJL$NN;\>5$r\<h$kI,MW$O$”$j$^$;$s!#e(B

e$B$O$$!"N;2r$G$9!#e(B  
(e$B%V%i%s%A%]%j%7!\<$+$iN;\>5$,I,MW$J;~$K$Oe(B - e$BA[Dj$7$F$$$k$N$Oe(B  
securerandom.rb e$B$NDI2C$G$9$,e(B - e$BN;\>5$r$\*4j$$$9$k$3$H$K$J$j$^e(B  
e$B$9$,e(B)

> e$B!!e(BTempfile#make\_tmpname (private)e$B$N$h$&$K%U%!%$%kL\>@8@.ItJ,$re(B  
> e$B%\*!\<%P!\<%i%$%I$9$k\<jCJ$,$J$$$3$H$,B?\>/5$$K$J$j$^$9$,!":n$C$?e(B  
> e$B0l;~%G%#%l%/%H%j$NCf$K9%$-$JL\>A0$N%G%#%l%/%H%j$r:n$l$P$$$$$N$Ge(B  
> e$BLdBj$O$J$5$=$&$G$9$M!#e(B

prefix e$B$O0z?t$G;XDj$G$-$k$N$G!“LdBj$Oe(B suffix e$B$G$9$,!”%G%#%le(B  
e$B%/%H%j$Ne(B suffix e$B$r;XDj$9$kI,MW@-$OGv$$$@$m$&$H$$$&H=CG$G$9!#e(B  
e$B%G%#%l%/%H%j$K3HD%;R$r$D$1$?$$%1!\<%9$O$“$^$j$J$$$G$”$m$&$H$$e(B  
e$B$&$+!#e(B

e$B$b$7!“$D$1$?$/$J$C$?$i!”$=$&$G$9$M$'!":#9M$($^$7$?$,e(B prefix  
e$B$N$H$3$m$Ke(B [prefix, suffix] e$B$H;XDj$9$k$H$+$G$9$+$M!#I,MW@-$,e(B  
e$B46$8$i$l$F$+$i$NOC$K$J$j$^$9$,!“3HD%$KL5M}$,$”$k$H$$$&$3$H$Oe(B  
e$B$J$5$=$&$G$9!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [August 21, 2007, 10:02am UTC](https://www.ruby-forum.com/t/dir-mktmpdir-for-1-8/112347/5 "2007-08-21T10:02:29Z")

</div>

At Sat, 18 Aug 2007 21:42:42 +0900,  
Tanaka A. wrote:

> In article [E1IMCUq-00083X-Uo@x31](mailto:E1IMCUq-00083X-Uo@x31),  
> Yukihiro M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:
> 
> > |ãã‚Œã¯ãã‚Œã¨ã—ã¦ã€1.8 ã§æ©Ÿèƒ½æ‹¡å¼µã™ã‚‹ã«ã¯èª°ã®äº†è§£ã‚’å¾—ã‚Œã°ã„ã„  
> > |ã‚“ã§ã—ãŸã£ã‘?
> > 
> > è²¬ä»»è€…ã¯knuã•ã‚“ã§ã™ã­ã€‚

ã€€ãƒ–ãƒ©ãƒ³ãƒãƒãƒªã‚·ãƒ¼ã«è¨˜è¼‰ã®æ¡ä»¶ã‚’æº€ãŸã—ã¦ã„ã‚Œã°ã‚ˆãã€å‡çµæœŸé–“å¤–ã«  
ç§ã‹ã‚‰å€‹åˆ¥ã®äº†æ‰¿ã‚’å–ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“ã€‚

> åŽ»å¹´ã‹ã‚‰ã® knu ã•ã‚“ã®ãƒ¡ãƒ¼ãƒ«ã‚’ã•ã‚‰ã£ã¦ã€[ruby-dev:29919]  
> (ã¨ [ruby-dev:29979]) ã‚’èª­ã¿ç›´ã—ãŸçµæžœã€
> 
> - ç¾åœ¨ 1.8 ã¯å‡çµä¸­ã§ãªãã€
> - è¿½åŠ ãªã®ã§ä¸Šä½äº’æ›ã§ã€
> - trunk ã«ã¯ã™ã§ã«å…¥ã£ã¦ã„ã¦ã€
> - ã„ã¾ã®ã¨ã“ã‚åå¯¾æ„è¦‹ã‚‚ãªã„ã€  
> ã®ã§ã€å…¥ã‚Œã¾ã—ãŸã€‚

ã€€å€‹äººçš„ã«ã‚‚æ¬²ã—ã„æ©Ÿèƒ½ã§ã—ãŸã€‚

ã€€Tempfile#make\_tmpname (private)ã®ã‚ˆã†ã«ãƒ•ã‚¡ã‚¤ãƒ«åç”Ÿæˆéƒ¨åˆ†ã‚’  
ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹æ‰‹æ®µãŒãªã„ã“ã¨ãŒå¤šå°‘æ°—ã«ãªã‚Šã¾ã™ãŒã€ä½œã£ãŸ  
ä¸€æ™‚ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸­ã«å¥½ããªåå‰ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ä½œã‚Œã°ã„ã„ã®ã§  
å•é¡Œã¯ãªã•ãã†ã§ã™ã­ã€‚

–  
/  
/\_\_ \_\_ [Akinori.org](http://Akinori.org) / [MUSHA.org](http://MUSHA.org)  
/ ) ) ) ) / [FreeBSD.org](http://FreeBSD.org) / [Ruby-lang.org](http://Ruby-lang.org)  
Akinori MUSHA aka / (\_ / ( (\_\_( @ [iDaemons.org](http://iDaemons.org) / and.or.jp

“Different eyes see different things,  
Different hearts beat on different strings –  
But there are times for you and me when all such things agree”

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [August 21, 2007, 2:22pm UTC](https://www.ruby-forum.com/t/dir-mktmpdir-for-1-8/112347/6 "2007-08-21T14:22:16Z")

</div>

In article [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
“Akinori MUSHA” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> e$B!!Nc$H$7$F!"e(B Mac OS X e$B$G$O%G%#%l%/%H%j$K$b3HD%;R$rIU$1$F\<oJL$Ne(B  
> e$BH=Dj$KMQ$$$F$$$^$9!#e(B
> 
> e$B!!%"%W%j%1!\<%7%g%s$Oe(B .app, Keynote e$B=qN`$Oe(B .key, e$BB?9q8lL\>$r;}$De(B  
> e$B%U%)%k%@$Oe(B .localized e$BEy$G$9!#e(B
> 
> e$B!!$3$&$7$?!V%U%!%$%k!W$N0l;~%3%T!\<$r:n$C$F=hM}$7$?$j$9$k$H$-$O!"e(B  
> e$B%5%U%#%C%/%9$r;XDj$G$-$J$$$H$=$N$^$^$G$O;H$($^$;$s!#e(B

e$B$\*$)!"$$$-$J$jI,MW@-$r\<B46$7$^$7$?!#e(B  
e$B$D$1$^$7$g$&!#$F$$$&$+$D$1$^$7$?!#e(B

> e$B!!$J$k$[$I!#e(B[prefix, suffix] e$B$G==J,$+$b$7$l$^$;$s$M!#e(BTempfile e$B$be(B  
> e$B$=$&$7$^$7$g$&$+!#e(B
> 
> e$B!!$D$$$G$Ke(B $prefix.$$.$n e$B$H$$$&@8@.5,B’$b$$$^$$$Ae(B(. e$B$r;H$C$F$$$ke(B,  
> e$BMp?t$r;H$C$F$$$J$$e(B, e$BEye(B)e$B$J$N$GJQ$($?$$$,!“$4CzG+$K%I%-%e%a%s%H$Ke(B  
> “basename.pid.n” e$B$J$s$FL@5-$7$F$7$^$C$F$$$k$+$i$J$”!D!#e(B

e$B;d$N463P$@$H!“$3$l$OJQ$($FJ86g$,=P$k2DG=@-$O$”$^$j$J$$N`$N5se(B  
e$BF0$G$9$N$G!"JQ$($F$b$$$$$s$8$c$J$$$+$H;W$$$^$9$,!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [August 21, 2007, 1:45pm UTC](https://www.ruby-forum.com/t/dir-mktmpdir-for-1-8/112347/7 "2007-08-21T13:45:07Z")

</div>

At Tue, 21 Aug 2007 17:33:06 +0900,  
Tanaka A. wrote:

> In article [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
> “Akinori MUSHA” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:
> 
> > ã€€ãƒ–ãƒ©ãƒ³ãƒãƒãƒªã‚·ãƒ¼ã«è¨˜è¼‰ã®æ¡ä»¶ã‚’æº€ãŸã—ã¦ã„ã‚Œã°ã‚ˆãã€å‡çµæœŸé–“å¤–ã«  
> > ç§ã‹ã‚‰å€‹åˆ¥ã®äº†æ‰¿ã‚’å–ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“ã€‚
> 
> ã¯ã„ã€äº†è§£ã§ã™ã€‚  
> (ãƒ–ãƒ©ãƒ³ãƒãƒãƒªã‚·ãƒ¼ã‹ã‚‰äº†æ‰¿ãŒå¿…è¦ãªæ™‚ã«ã¯ - æƒ³å®šã—ã¦ã„ã‚‹ã®ã¯  
> securerandom.rb ã®è¿½åŠ ã§ã™ãŒ - äº†æ‰¿ã‚’ãŠé¡˜ã„ã™ã‚‹ã“ã¨ã«ãªã‚Šã¾  
> ã™ãŒ)

ã€€ã‚ã‹ã‚Šã¾ã—ãŸã€‚MLã§ã®è­°è«–ã‚’èª­ã¿è¿”ã—ã¦ãŠãã¾ã™ã€‚

> > ã€€Tempfile#make\_tmpname (private)ã®ã‚ˆã†ã«ãƒ•ã‚¡ã‚¤ãƒ«åç”Ÿæˆéƒ¨åˆ†ã‚’  
> > ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹æ‰‹æ®µãŒãªã„ã“ã¨ãŒå¤šå°‘æ°—ã«ãªã‚Šã¾ã™ãŒã€ä½œã£ãŸ  
> > ä¸€æ™‚ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸­ã«å¥½ããªåå‰ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ä½œã‚Œã°ã„ã„ã®ã§  
> > å•é¡Œã¯ãªã•ãã†ã§ã™ã­ã€‚
> 
> prefix ã¯å¼•æ•°ã§æŒ‡å®šã§ãã‚‹ã®ã§ã€å•é¡Œã¯ suffix ã§ã™ãŒã€ãƒ‡ã‚£ãƒ¬  
> ã‚¯ãƒˆãƒªã® suffix ã‚’æŒ‡å®šã™ã‚‹å¿…è¦æ€§ã¯è–„ã„ã ã‚ã†ã¨ã„ã†åˆ¤æ–­ã§ã™ã€‚  
> ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æ‹¡å¼µå­ã‚’ã¤ã‘ãŸã„ã‚±ãƒ¼ã‚¹ã¯ã‚ã¾ã‚Šãªã„ã§ã‚ã‚ã†ã¨ã„  
> ã†ã‹ã€‚

ã€€ä¾‹ã¨ã—ã¦ã€ Mac OS X ã§ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ã‚‚æ‹¡å¼µå­ã‚’ä»˜ã‘ã¦ç¨®åˆ¥ã®  
åˆ¤å®šã«ç”¨ã„ã¦ã„ã¾ã™ã€‚

ã€€ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã¯ .app, Keynote æ›¸é¡žã¯ .key, å¤šå›½èªžåã‚’æŒã¤  
ãƒ•ã‚©ãƒ«ãƒ€ã¯ .localized ç­‰ã§ã™ã€‚

ã€€ã“ã†ã—ãŸã€Œãƒ•ã‚¡ã‚¤ãƒ«ã€ã®ä¸€æ™‚ã‚³ãƒ”ãƒ¼ã‚’ä½œã£ã¦å‡¦ç†ã—ãŸã‚Šã™ã‚‹ã¨ãã¯ã€  
ã‚µãƒ•ã‚£ãƒƒã‚¯ã‚¹ã‚’æŒ‡å®šã§ããªã„ã¨ãã®ã¾ã¾ã§ã¯ä½¿ãˆã¾ã›ã‚“ã€‚

> ã‚‚ã—ã€ã¤ã‘ãŸããªã£ãŸã‚‰ã€ãã†ã§ã™ã­ã‡ã€ä»Šè€ƒãˆã¾ã—ãŸãŒ prefix  
> ã®ã¨ã“ã‚ã« [prefix, suffix] ã¨æŒ‡å®šã™ã‚‹ã¨ã‹ã§ã™ã‹ã­ã€‚å¿…è¦æ€§ãŒ  
> æ„Ÿã˜ã‚‰ã‚Œã¦ã‹ã‚‰ã®è©±ã«ãªã‚Šã¾ã™ãŒã€æ‹¡å¼µã«ç„¡ç†ãŒã‚ã‚‹ã¨ã„ã†ã“ã¨ã¯  
> ãªã•ãã†ã§ã™ã€‚

ã€€ãªã‚‹ã»ã©ã€‚[prefix, suffix] ã§ååˆ†ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ã­ã€‚Tempfile ã‚‚  
ãã†ã—ã¾ã—ã‚‡ã†ã‹ã€‚

ã€€ã¤ã„ã§ã« $prefix.$$.$n ã¨ã„ã†ç”Ÿæˆè¦å‰‡ã‚‚ã„ã¾ã„ã¡(. ã‚’ä½¿ã£ã¦ã„ã‚‹,  
ä¹±æ•°ã‚’ä½¿ã£ã¦ã„ãªã„, ç­‰)ãªã®ã§å¤‰ãˆãŸã„ãŒã€ã”ä¸å¯§ã«ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã«  
“basename.pid.n” ãªã‚“ã¦æ˜Žè¨˜ã—ã¦ã—ã¾ã£ã¦ã„ã‚‹ã‹ã‚‰ãªã‚â€¦ã€‚

# Index: tempfile.rb

— tempfile.rb (revision 13119)  
+++ tempfile.rb (working copy)  
@@ -15,9 +15,15 @@  
@@cleanlist = []  
@@lock = Mutex.new

- 
# Creates a temporary file of mode 0600 in the temporary directory
- 
# whose name is basename.pid.n and opens with mode “w+”. A Tempfile
- 
# object works just like a File object.

- 
# Creates a temporary file of mode 0600 in the temporary directory,
- 
# opens it with mode “w+”, and returns a Tempfile object which
- 
# represents the created temporary file. A Tempfile object can be
- 
# treated just like a normal File object.
- 
# 
- 
# The basename parameter is used to determine the name of a
- 
# temporary file. If an Array is given, the first element is used
- 
# as prefix and the second as suffix, respectively. Otherwise it is
- 
# treated as a string and used as prefix.

# 

# If tmpdir is omitted, the temporary directory is determined by

# Dir::tmpdir provided by ‘tmpdir.rb’.

@@ -65,7 +71,12 @@  
end

def make\_tmpname(basename, n)

- sprintf(‘%s.%d.%d’, basename, $$, n)

- case basename
- when Array
- 

```
 sprintf('%s.%d.%d%s', basename[0], $$, n, basename[1])

```

- else
- 

```
 sprintf('%s.%d.%d', basename, $$, n)

```

- end  
end  
private :make\_tmpname

–  
/  
/\_\_ \_\_ [Akinori.org](http://Akinori.org) / [MUSHA.org](http://MUSHA.org)  
/ ) ) ) ) / [FreeBSD.org](http://FreeBSD.org) / [Ruby-lang.org](http://Ruby-lang.org)  
Akinori MUSHA aka / (\_ / ( (\_\_( @ [iDaemons.org](http://iDaemons.org) / and.or.jp

“Different eyes see different things,  
Different hearts beat on different strings –  
But there are times for you and me when all such things agree”
