Import RubyGems to Ruby 1.9

e$B2!ED$G$9!#e(B

(e$B$3$l$Oe(Bdebe$B$r%a%s%F%J%s%9$7$F$-$?Cf$G$N7P83$+$i$/$k?dB,$G!“e(B
e$B$h$C$FE*30$l$G$”$k2DG=@-$b$"$j$^$9e(B)e$B$+$i!"e(B

e$BJL$N%a!<%k$G$bF1$8$h$&$J$3$H$r=q$-$^$7$?$,G0$N$?$a!#e(B

e$BBgJQ<:Ni$rCW$7$^$7$?!"e(B
http://akira.org e$B$rGR8+$7!"e(B
e$B$d$^$@$5$s$,e(B debian official developer e$B$G$$$i$7$F!"e(B
Ruby e$B%Q%C%1!<%8$N%a%s%F%J%s%9$r$5$l$F$$$k;v<B$r:#G’<1$7$^$7$?!#e(B
m(__)m

e$B;d$Oe(B gem e$B$,e(B pkg* / apt* / rpm e$B$Ne(B frontend e$B$r1i$8$F$bNI$$$H;W$$$^$9!#e(B
e$B$I$&$$$&>u67$+A[A|$G$-$J$$$N$G$9$1$Ie(B
e$BIaDL$N%P%$%J%j%Q%C%1!<%8%f!<%6$Oe(B
debe$B$J$je(Brpme$B$J$j$,e(Bgeme$B$GA`:n$G$-$F$be(B
e$B$&$l$7$/$J$$$s$8$c$J$$$G$7$g$&$+!#e(B

rpm e$B$KBP$9$ke(B yum e$B$HF1$8;v!J$N1dD9!K$rA[Dj$7$F$$$^$9!#e(B
gem e$B$H%?%$%W$9$k$1$l$I%Q%C%1!<%8$rA`:n$7$F$$$k$N$Oe(B gem
e$B$G$O$J$/e(B rpm e$B$G$"$k!"e(B
e$B$H$$$&>u67$G$9!#e(B

yum e$B$N>l9g$Oe(B wget e$B$He(B rpm -i / -e e$B$@$1$G$9$,!"e(B
gem e$B$K$Oe(B rpm spec e$B$de(B .src.rpm e$B$N<+F0@8@.$He(B rpmbuild
e$B$rDI2C$G$d$C$F$b$i$$$^$9!#e(B
e$B2DG=$J$i$P4{$Ke(B build e$B$5$l$?e(B .rpm
e$B$O6&M-=PMh$k$HNI$$$G$7$g$&!#e(B

e$B$=$&$9$k$H!"e(Brpm e$B$,CN$i$J$$%U%!%$%k$rB8:$5$;$:$K:Q$$^$9!#e(B

e$BI=LLE*$K$O!“e(B
yum e$B$G$O%”%/%;%9$G$-$J$$$,e(B gem
e$B$G%"%/%;%9$G$-$k%j%]%8%H%j$,A}$($k!"e(B
e$B$H$$$&;v$K$J$j$^$9!#e(B

e$B$D$$$G$K$$$($P%P%$%J%j%Q%C%1!<%8$N%f!<%6$Oe(B

e$B%P%$%J%j$G$O$J$$e(Bgeme$B$K$b$=$l$[$I6=L#$r;}$?$J$$$H;W$$$^$9!#e(B

e$B$9$_$^$;$s!"$3$A$i$N>u67$,M}2r$G$-$^$;$s!#e(B

e$B=tHL$NEj9F$N$h$&$K!";d$O!"e(B
.rpm / .deb e$B$K4^$^$l$F$$$?%U%!%$%k$re(B gem
e$B$,=q$-49$($F$7$^$&$3$H!"e(B
e$B$rLdBj;k$5$l$F$$$k$b$N$HG’<1$7$F$$$^$9!#e(B
e$B$=$N0UL#$G$O%P%$%J%j$+%P%$%J%j$GL5$$$+!Je(Brpm e$B$G$$$&e(B .i386.rpm
e$B$He(B .noarch.rpm e$B$Ne(B
e$B:9!K$O!"e(B
e$B4X78$,L5$$H&$G$9!#e(B

e$B$D$^$j!“$d$O$j!”;d$O2?$,LdBj$+G’<1$7$F$$$J$$2DG=@-$,$"$k!"e(B
e$B$H$$$&$3$H$G$7$g$&$+e(B(^^;

e$B2!ED$G$9!#e(B

e$B$=$&$$$&$H$-!"%Q%C%1!<%8%7%9%F%$K$J$$$H$3$m$Ge(B e$B99?7$7$?%U%!%$%k$O%Q%C%1!<%8%7%9%F%$K$h$C$F$Oe(B
e$BC1$K>e=q$-$5$l$F$7$^$$$^$9!#e(B

e$B$"!<!&!&!&e(B

e$B$9$_$^$;$se(B
e$B$3$l$,!VAj@-!W$H$OA[Dj$7$F$$$^$;$s$G$7$?!#e(B

e$B$=$&$$$($P2a5n%m%0$K!V$^$<$k$J4m81!W$C$FI=8=$,=P$FMh$F$$$?$h$&$J!&!&!&e(B

e$B$D$^$k$H$3$m%f!<%6%S%j%F%#$G$9$h$M!#e(B
e$B%G%#%9%H%j%S%e!<%?!<$5$s$,EvA3=E;k$5$l$F$$$kE@$K0c$$$J$$$H;W$$$^$9!#e(B

e$B$G!"5$$r<h$jD>$7$F!#e(B
e$B$3$NLdBj$OI|?t%Q%C%1!<%8%7%9%F%`$r:.MQ$7$?$i2sHr$5$l$J$$$G$7$g$&!#e(B
e$B8eH/$,1sN8$9$k$Y$-$H$$$&4QE@$+$ie(B pre-installed gem
e$B$O6X4w$G$9!#e(B

e$B$J$N$G!"#2$D$K#1$D!#e(B
rpm / apt* e$B$Ke(B .gem e$B$r%$%s%9%H!<%k$5$;$k$+e(B
gem e$B$Ke(B .rpm / .deb e$B$r%$%s%9%H!<%k$5$;$k$+e(B
e$B$I$C$A$+$8$c$J$$$G$9$+!)e(B

e$BA0<T$NJ}$,9)?t$O>/$J$$!J$H$$$&$+e(B gem
e$B$KJQ99$OMW$i$J$$!K$G$7$g$&$M!#e(B
e$B$?$@e(B rpm e$B0J30$NET9g$OH=$j$+$M$^$9e(B :frowning:
e$B8e<T$O>l9g$K$h$C$F$Oe(B gcc e$B$d$ie(B rpmbuild
e$B$d$iIaCJ%(%s%I%f!<%6!<$KI,MW$J$$%3%^%s%Ie(B
e$B$,I,MW$G!“e(B
e$B$”$k0UL#%f!<%6%S%j%F%#$KH?$7$F$$$^$9!#e(B

e$B8D?ME*$Je(B .gem
e$B%$%s%9%H!<%k$N7P83$G8@$($PMW$i$J$$J*$OF~$l$5$;$?$/$J$$$N$G!"e(B
e$BA0<T$K0lI<$G$9!#e(B

e$B$J$+$@$G$9!#e(B

At Mon, 22 Oct 2007 13:34:38 +0900,
[email protected] wrote in [ruby-dev:32121]:

pre-installed geme$B$rD>@%$%s%9%H!<%k$9$k$H$$$&$N$O!"e(Brubye$B<+BN$r%=!<e(B
e$B%9$+$i%$%s%9%H!<%k$9$k>l9g$G$9$h$M!#e(B

e$B$$$d5U$8$c$J$$$G$9$+!#e(B
e$B;d$O%P%$%J%j%Q%C%1!<%8$Ge(B ruby e$B$r%$%s%9%H!<%k$9$k>l9g$@$H9M$($F$$$^$9!#e(B

e$B%P%$%J%j%Q%C%1!<%8$K4X$7$F$O!“4V$K$b$&0lCJ%Q%C%1!<%8%a%s%F%J$,$$e(B
e$B$k$o$1$G!“2?$r0l=o$K%Q%C%1!<%8$9$k$+$H$$$&H=CG$O!”$=$3$G$5$l$k$Ye(B
e$B$-$@$m$&$H9M$($F$$$^$9!#%i%$%V%i%j$rJ,3d$9$k$b$h$7!”$[$+$N%i%$%Ve(B
e$B%i%j$rE}9g$9$k$b$h$7!#e(B

e$B$=$N%Q%C%1!<%8$Ke(B gems/ e$B0J2<$N%U%!%$%k$r4^$a$F$7$^$C$?>l9g!"8e!9e(B
gem e$B$G%Q%C%1!<%8%c$,4IM}$7$F$$$k%U%!%$%k9=@.$rGK2u$9$k;v$,=PMhe(B
e$B$F$7$^$&$G$7$g$&!#$=$7$F$=$l$,LdBj$K@.$jF@$k$N$G$7$g$&!#e(B

e$BAj@-LdBj$H$OJL$NOC$G$9!#e(B

e$BAj@-LdBj$O$R$H$^$:$$$$F$$/$H$7$F!“e(Brubye$BK\BNB&$G4XM?$9$Y$-$G$O$Je(B
e$B$$NN0h$G$O$J$$$+!”$H$$$&$N$,;d$N0U8+$G$9!#e(B

e$B;d$b$=$&;W$$$^$9$h!#e(B
e$B%Q%C%1!<%8$5$l$k:]$NET9g$r5$$K$7$F$/$l$k%W%m%8%’%/%H$J$s$F!"e(B
e$BIaDL$OL5$$$H;W$$$^$9e(B^^

e$B$$$(!"$?$H$($Pe(BDESTDIRe$B$KBP1~$7$?$j!"e(B1.9e$B$G$Oe(Bincludedire$B$KJ,N%$7$?$j!"e(B
e$B$=$l$J$j$K5$$K$O$7$F$$$^$9!#$@$+$i$3$=!"5U$K%Q%C%1!<%8$9$kB&$KETe(B
e$B9g$r2!$7$D$1$F$7$^$&e(Bpre-installed
geme$B$K$O;?@.$G$-$J$$$N$G$9$,!#e(B

e$B2!ED$G$9!#e(B

rpm / apt* e$B$Ke(B .gem e$B$r%$%s%9%H!<%k$5$;$k$+e(B
gem e$B$Ke(B .rpm / .deb e$B$r%$%s%9%H!<%k$5$;$k$+e(B

e$BA0<T$K0lI<$G$9!#e(B

e$B<+8JL7=b$7$F$$$^$7$?!#e(B
e$B7k6IA0<T$be(B gcc e$B$,I,MW$J%1!<%9$O$"$j$^$9$M!#e(B

e$BD{@5$5$;$FD:$-$^$9!#e(B

e$B7k2L$r%-%c%C%7%e$G$-$k2DG=@-$rM-$9$k$N$G!"e(B
e$B8e<T$K0lI<$G$9!#e(B

e$B2!ED$G$9!#e(B

e$BAj@-LdBj$H$OJL$NOC$G$9!#e(B

e$B$I$&$d$i$=$N$h$&$G$9$Me(B(^^;
e$BESCf;22C$G%m%0$rFI$_@Z$l$F$$$J$+$C$?$+$HH?>J$7$F$$$^$9!#e(B

e$B$$$(!"$?$H$($Pe(BDESTDIRe$B$KBP1~$7$?$j!"e(B1.9e$B$G$Oe(Bincludedire$B$KJ,N%$7$?$j!"e(B
e$B$=$l$J$j$K5$$K$O$7$F$$$^$9!#$@$+$i$3$=!"5U$K%Q%C%1!<%8$9$kB&$KETe(B
e$B9g$r2!$7$D$1$F$7$^$&e(Bpre-installed geme$B$K$O;?@.$G$-$J$$$N$G$9$,!#e(B

RubyGems
e$B$K%i%$%V%i%j@=:n<T$NIiC4$r7Z$/$9$k$H$$$&0lLL$,$"$k$H$9$k$H!"e(B
e$B$=$&$d$C$F?J2=$,2CB.$7$?%i%$%V%i%j$rI8=`2=$7$?$+$C$?$i$I$&$9$k$+!"e(B
e$B$H8@$&$+2?$b9M$($J$+$C$?$ie(B pre-installed gem
e$B$K$J$j$^$9$h$M!#e(B
e$B$=$NA0Ds$Ge(B pre-installed gem
e$B$NOC$O=P$F$-$F$$$k$h$&$K;W$C$F$$$^$9!#e(B

e$BC&e(B gem e$B2=$NIiC4$rIi$C$F$G$bI8=2=$7$?$$$+!"e(B e$B5U$KI8=2=$9$k$K$OC&e(B gem e$B2=$,I,?$+!“e(B
e$B$=$N0UL#$G$Oe(B Ruby e$BB&$G9M$($kMWAG$G$O$”$k$H;W$$$^$9!#e(B

e$B$=$l$O$$$D$NL$Mh$@!)$C$F$$$&$N$OA[A|$,$D$-$^$;$s$1$l$I!#e(B

In article E1IG7kP-0003NB-Gk@x31,
Yukihiro M. [email protected] writes:

|e$BJ#?t$N%Q%C%1!<%8%s%0%7%9%F%$,FI$_9~$^$l$k$H!"$=$l$>$l$,85$N%a%=%Ce(B |e$B%I$re(Baliase$B$J$I$7$F$*$$$F$=$l$r8F$S=P$9$3$H$K$J$k$H;W$$$^$9$,!"$=e(B |e$B$&$9$k$H!"=g=x$rJQ$($?$j>l9g$K$h$C$F$O<h$j=|$$$?$j$H$$$C$?A:n$,e(B
|e$B:$Fq$K$J$j$^$9!#$^$?!“@h$N%a!<%k$G$O>JN,$7$?ItJ,$b4^$a$F$=$l$>$le(B
|e$B$G:F<BAu$9$kI,MW$,$”$j$^$9!#$=$N$X$s$rE}0lE*$K<h$j07$($k$h$&$K$7e(B
|e$B$?$$!"$H$$$&$N$,M}M3$G$9!#e(B

e$B$R$H$D$N%W%m%0%i%$GJ#?t$N%Q%C%1!<%8%7%9%F%$,L7=b$;$:$K6&B8e(B
e$B$G$-$k>uBV$OA[A|$G$-$J$$$s$G$9$,!"$=$N$h$&$JBP1~$OI,MW$J$N$Ge(B
e$B$7$g$&$+!#e(B

e$BCfED$5$s$N0F$r8!F$$7$?7k2L!“%Q%C%1!<%8%7%9%F%`$H$7$Fe(B
RubyGems e$B$@$1$r9M$($?>l9g$G$b!“e(BRubyGems
e$B$r:G=i$K%m!<%I$9$k%3!<e(B
e$B%I$re(B RubyGems e$B%m!<%I;~E@$G$G<h$j=|$1$k$J$I!”$$$/$D$b$NMxE@$,e(B
e$B$”$k$H;W$&$h$&$K$J$j$^$7$?!#e(B[ruby-core:12783]

e$B$G!“e(B[ruby-dev:31321] e$B$N0l0F$H$$$&$b$N$N<BAu$C$F$”$k$s$G$7$ge(B
e$B$&$+e(B?

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

e$B%"%C%W%G!<%H!#e(B

Yukihiro M. wrote:

| e$B%G%U%)%k%H$Ge(Bgeme$B%a%=%C%I$,;H$($k$N$J$i!"$d$O$je(BRubye$B8@8l;EMM$N0lIt$H9M$(e(B
e$B8D?ME*$K$O$$$-$J$je(BKernel.geme$B%a%=%C%I$,8F$Y$k$N$ONI$/$J$$$H;We(B
e$B$$$^$9!#e(BGeme$B%/%i%9e(B(e$B%b%8%e!<%k$@$C$1e(B)e$B$,Dj5A$5$l$A$c$&$N$b$[$se(B
e$B$H$&$O5$$KF~$i$J$$!#e(B

rubygemse$B$r%G%U%)%k%H$GM-8z2=$9$k$+H]$+$K$D$$$F$O!"e(B10/17e$B$Ke(Bdrbraine$B$,0J2<$Ne(B
e$B$h$&$K=q$$$F$^$9!#e(B

[ruby-core:12712]
| On IRC last night, matz, Koichi, akr and myself decided that RubyGems
| would be imported into trunk, but without require ‘rubygems’ by default.
| (Correct me if I am wrong.)

e$B$H$$$&$o$1$G!":#8e2?$+=P$F$3$J$$8B$j!"%G%U%)%k%HM-8z2=$O$J$7!"$H$$$&$3$He(B
e$B$G$9!#$I$&$$$&7P0^$G!“2?$r:,5r$K7h$^$C$?$N$+$O!”>e5-e(B4e$B?M$NC/$b@bL@$7$J$$e(B
e$B$N$GITL@$G$7$?$,!":rF|$K$J$C$FEDCf$5$s$,0J2<$N$h$&$K=q$$$F$$$^$9!#e(B

[ruby-core:12815]
| I think the decision is because release schedule.
| (ko1 strongly claim it.)

e$BK<A$N5DO@$O$J$/7h$^$C$?$N$+$b$M!#e(B

e$B$?$@!“e(Bruby-coree$B$G$OL$$@$KEDCf$5$s$H;d$N4V$G!”$I$&$d$C$?$i$&$^$$$3$He(B
e$B%G%U%)%k%HM-8z2=$9$k$3$H$,$G$-$k$+!"$H$$$&5DO@$,B3$$$F$$$^$9!#$?$@$7!"e(B
[ruby-core:12712]e$B$N7hDj$r0z$C$/$jJV$;$k$+$I$&$+$OITL@!#e(B

e$B$3$N$^$^;~4V@Z$l$@$H%G%U%)%k%HL58z$C$]$$$N$G!"%G%U%)%k%HM-8z2=GI$N?M$Oe(B
e$B4hD%$j$^$7$g$&!#e(B

e$BEDCf$5$s$H;d$7$+=P$F$-$F$J$$$N$G!"1Q8l$G5DO@$9$k$N$O;~4V$NO2Hq$Je(B

e$B5$$,$9$k!#e(Bruby-deve$B$K0$j$^$9e(B? > e$BEDCf$5$se(B

/ / /

|e$B$5$s$X$N1F6A$bBg$-$$$H;W$$$^$9!#e(B

e$B$G$7$g$&$M$(!#$b$&>/$76qBNE*$KJ9$-$?$$$J$"!#e(B

e$BD/$a$F$$$k8B$j$G$9$,!“e(Brubygemse$B$rI8=$GM-8z2=$7$h$&$,$7$^$$$,!"e(Bpre- installed-geme$B$G$J$1$l$P!"!Ve(BRubyGemse$BI8=E:IU$OLdBj$@!W$H8@$&?M$O5o$J$=$&e(B
e$B$J46$8$G$7$g$&$+!#B>$Ke(Bgeme$B$r:n$kB&$N<A$,Dc$$$H$$$&LdBj$O;XE&$5$l$F$^$9e(B
e$B$,!”$3$l$Oe(BRubyGemse$B$NLdBj$8$c$J$$$G$7$g$&$7!#e(B

e$B$^$D$b$H$5$s!“e(Bpre-installed-geme$B$r:NMQ$9$k$+H]$+$K$D$$$F!”$^$D$b$H$5$s$Ne(B
e$B0U8+$C$F=P$F$^$7$?$C$1e(B?
e$B$"$C$5$j!V$"!"$=$l$O%J%7!#$@$C$F!{!{$@$7!W$H$+$"$je(B
e$B$^$;$s$+!#$=$&$@$C$?$i5DO@$,3Z$K$J$k$H$$$&$+!"e(Bruby-deve$B$K4X$7$F$O5DO@$,<}e(B
e$BB+$7$=$&$J5$$,$9$k!#e(B

e$B$b$7e(Bpre-installed-geme$B$r:NMQ$9$k>l9g!"e(B

pre-installed-geme$B$K$D$$$F$O!"e(Bgems.rubyforge.orge$B$Ne(Bgeme$B$K$h$k>e=q$-$re(B
e$B$7?I$/$7!"e(Bgems.ruby-lang.orge$B$Ne(Bgeme$B$G$N>e=q$-$N$_A[Dj$9$k$h$&!"e(B
rubygemse$B$K;EMMJQ99$r0MMj$9$ke(B

e$B$H$+$ND4@0$,I,MW$K$J$k$O$:$G$9!#A0ED$5$s$h$m$7$/$M!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRx3OyB9L2jg5EEGlAQIDlgf/QZ0fTHQq9pk4zO9z7OQbBRRaD3pubIbk
fhCJBSsRbgKmYL8yVm0co6fTAmnDEqKcFhD627fR/EjX6bDHbA53YWAdA4TvPJaN
H7LPtTh3YKjLJV8cHGv6hk+zquAzlAgXn9ZSmcQHVzUapLn1ArrdDcM2XePSDE5u
WfQIbO5OUUEU/RyRHZc4tY58O2Xwr41jeCGRxAhkYkkwulo2owfyf0EnV3rvDWir
llX+OIFetrBcpgXM6K3KhcDRX92ZWNG6yQDFiVCu2PE1JM7JFI6dieos56Bj90Ox
zGXyaKZbLAnk0Fp63D8dngdsDdUnEZjcHndkYdXXByon1bmDDXFO+w==
=nGLl
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Yukihiro M. wrote:

|[ruby-core:12712]
|| On IRC last night, matz, Koichi, akr and myself decided that RubyGems
|| would be imported into trunk, but without require ‘rubygems’ by default.
|| (Correct me if I am wrong.)
|
|e$B$H$$$&$o$1$G!“:#8e2?$+=P$F$3$J$$8B$j!”%G%U%)%k%HM-8z2=$O$J$7!“$H$$$&$3$He(B
|e$B$G$9!#$I$&$$$&7P0^$G!“2?$r:,5r$K7h$^$C$?$N$+$O!”>e5-e(B4e$B?M$NC/$b@bL@$7$J$$e(B
|e$B$N$GITL@$G$7$?$,!”:rF|$K$J$C$FEDCf$5$s$,0J2<$N$h$&$K=q$$$F$$$^$9!#e(B

e$B!V;~4V$,B-$j$J$=$&!W$H$$$&$N$,:GBg$N>c32$@$HG’<1$7$F$$$^$9!#e(B

e$BN;2r!#@bL@$“$j$,$H$&$4$6$$$^$9!#$h$$0F$,=P$l$P:F8!F$!”$H$$$&$N$OJQ$o$C$Fe(B
e$B$J$$$H$$$&$3$H$G!"EDCf$5$s$H$N5DO@$bL50UL#$G$O$J$$$h$&$G$h$+$C$?!#e(B

|e$B$^$D$b$H$5$s!“e(Bpre-installed-geme$B$r:NMQ$9$k$+H]$+$K$D$$$F!”$^$D$b$H$5$s$Ne(B
|e$B0U8+$C$F=P$F$^$7$?$C$1e(B? e$B$“$C$5$j!V$”!“$=$l$O%J%7!#$@$C$F!{!{$@$7!W$H$+$”$je(B
|e$B$^$;$s$+!#$=$&$@$C$?$i5DO@$,3Z$K$J$k$H$$$&$+!"e(Bruby-deve$B$K4X$7$F$O5DO@$,<}e(B
|e$BB+$7$=$&$J5$$,$9$k!#e(B

1.9.1e$B$G$Oe(Bpre-installed-geme$B$r:NMQ$9$k$D$b$j$O$"$j$^$;$s!#%G%U%)e(B
e$B%k%HM-8z2=$5$l$F$$$J$$$N$K:NMQ$7$F$b0UL#$J$$$7!#e(B

e$B$^$?HyL/$J!#e(B

e$B%G%U%)%k%H$GM-8z2=$5$l$F$$$J$$$N$K:NMQ$7$F$b0UL#$,$J$$$+$i!"e(B
1.9.1e$B$G$Oe(Bpre-installed-geme$B$r:NMQ$9$k$D$b$j$O$J$$!#e(B

e$B$H$$$&$3$H$@$C$?$j$7$^$9e(B?
e$B!V0UL#$J$$$7!#!W$H$$$&$H$3$m$+$i$O!“B>$KM}M3$,e(B
e$B$”$C$F!“$5$i$K!”$H$$$&$3$H$+$b$7$l$^$;$s$,!#e(B

e$B$A$J$_$Ke(BMac OSX 10.5
Leoparde$B$Ne(BRubye$B$O!"e(Bpre-installed-geme$BIU$-$@$=$&$G$9!#e(B
http://rubyforge.org/pipermail/rubygems-developers/2007-October/003112.html
e$B$?$@$7e(Bpre-installed-geme$B$H!"8e$+$i%f!<%6$,e(Bgeme$B$rDI2C$9$k;~$G$O!“e(BGEM_PATHe$B$,e(B
e$BJL$G!”%f!<%6$,e(Bgeme$B%3%^%s%I$rC!$$$F$b!"e(Bpre-installed-geme$B$O>e=q$-$5$l$J$$!#e(B

e$B$*$=$i$/e(BMac
OSXe$B$N%"%C%W%G!<%HMQ$H%f!<%6$,C!$/%3%^%s%IMQ$H!"e(B2e$B$De(Bgeme$B%3%^%se(B
e$B%I$,F~$C$F$$$F!"APJ}8DJL$Ne(BGEM_PATHe$B$r;}$C$F$k$s$G$7$g$&!#$A$J$_$Ke(BRubyGems
e$B$G$O!"e(Bgeme$B$NFI$9~$$O!"J#?te(BGEM_PATHe$B$r;XDj$9$l$P$$$:$l$+$i$G$bFI$9~$$^e(B
e$B$9!#6hJL$b$J$/$F!"8!:wBP>]$,B?$/$J$k$@$1!#e(B

rubygemse$B$O%G%U%)%k%H$GFI$_9~$^$l$k$N$+$J!#e(BRailse$B;H$&J,$K$O$I$&$;e(BRailse$B$+$ie(B
rubygemse$B$,FI$_9~$^$l$k$N$G!"FC$K5$$K$7$F$J$$$+$b!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRx8/1R9L2jg5EEGlAQJtnggAi7gUo4qpI6gv3lh9xn1i77ca4ceMIyN9
5DZE0fCXvncSVXtsa/8+fZGnyfFrLuzkUnpblFY90B0nIZ4VBI9a7DeDI5vh/QYk
cvz0AGrrfjSAahopBivPvMJWhyH8LKXfQXaCGURkOduCr9GqewygmDoXQRycIxQh
sD1fZG8fg8NW6Sr8E6KsoZUku997FsI09CnKCPPdqmIPIyLNqPNKrkqUtFgcRWgp
u5co9TktPWUJpTcZyeGUR2r2qCdB3ohdGbxEVBunTDFF43It6noXUWSUoO8V+8ij
3YxJj+LfnIGoyeJvK50tS/ceas3cPnmVY3fEqV3fRaX6hm4VXriBIw==
=yYBh
-----END PGP SIGNATURE-----

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

In message “Re: [ruby-dev:32132] Re: Import RubyGems to Ruby 1.9”
on Tue, 23 Oct 2007 19:37:26 +0900, “NAKAMURA, Hiroshi”
[email protected] writes:

|[ruby-core:12712]
|| On IRC last night, matz, Koichi, akr and myself decided that RubyGems
|| would be imported into trunk, but without require ‘rubygems’ by default.
|| (Correct me if I am wrong.)
|
|e$B$H$$$&$o$1$G!“:#8e2?$+=P$F$3$J$$8B$j!”%G%U%)%k%HM-8z2=$O$J$7!“$H$$$&$3$He(B
|e$B$G$9!#$I$&$$$&7P0^$G!“2?$r:,5r$K7h$^$C$?$N$+$O!”>e5-e(B4e$B?M$NC/$b@bL@$7$J$$e(B
|e$B$N$GITL@$G$7$?$,!”:rF|$K$J$C$FEDCf$5$s$,0J2<$N$h$&$K=q$$$F$$$^$9!#e(B

e$B!V;~4V$,B-$j$J$=$&!W$H$$$&$N$,:GBg$N>c32$@$HG’<1$7$F$$$^$9!#e(B

|e$B$^$D$b$H$5$s!“e(Bpre-installed-geme$B$r:NMQ$9$k$+H]$+$K$D$$$F!”$^$D$b$H$5$s$Ne(B
|e$B0U8+$C$F=P$F$^$7$?$C$1e(B? e$B$“$C$5$j!V$”!“$=$l$O%J%7!#$@$C$F!{!{$@$7!W$H$+$”$je(B
|e$B$^$;$s$+!#$=$&$@$C$?$i5DO@$,3Z$K$J$k$H$$$&$+!"e(Bruby-deve$B$K4X$7$F$O5DO@$,<}e(B
|e$BB+$7$=$&$J5$$,$9$k!#e(B

1.9.1e$B$G$Oe(Bpre-installed-geme$B$r:NMQ$9$k$D$b$j$O$"$j$^$;$s!#%G%U%)e(B
e$B%k%HM-8z2=$5$l$F$$$J$$$N$K:NMQ$7$F$b0UL#$J$$$7!#e(B

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

In message “Re: [ruby-dev:32144] Re: Import RubyGems to Ruby 1.9”
on Wed, 24 Oct 2007 21:52:10 +0900, “NAKAMURA, Hiroshi”
[email protected] writes:

|> 1.9.1e$B$G$Oe(Bpre-installed-geme$B$r:NMQ$9$k$D$b$j$O$"$j$^$;$s!#%G%U%)e(B
|> e$B%k%HM-8z2=$5$l$F$$$J$$$N$K:NMQ$7$F$b0UL#$J$$$7!#e(B
|
|e$B$^$?HyL/$J!#e(B

e$B$(!)e(B e$BHyL/!)e(B

| e$B%G%U%)%k%H$GM-8z2=$5$l$F$$$J$$$N$K:NMQ$7$F$b0UL#$,$J$$$+$i!“e(B
| 1.9.1e$B$G$Oe(Bpre-installed-geme$B$r:NMQ$9$k$D$b$j$O$J$$!#e(B
|
|e$B$H$$$&$3$H$@$C$?$j$7$^$9e(B? e$B!V0UL#$J$$$7!#!W$H$$$&$H$3$m$+$i$O!“B>$KM}M3$,e(B
|e$B$”$C$F!”$5$i$K!"$H$$$&$3$H$+$b$7$l$^$;$s$,!#e(B

e$B$=$&$$$&$3$H$G$9!#!V0UL#$J$$$7!W$H$$$&$N$O!V0UL#$J$$$+$i!W$He(B
e$B$$$&$D$b$j$J$s$G$9$,!#$J$*!"5DO@$,?J$s$G%G%U%)%k%H$Ge(Bgeme$B$+$ie(B
e$B%m!<%I$G$-$k$h$&$K$J$C$?$H$7$F$be(B1.9.1e$B$G$Oe(Bpre-installed-geme$B$Oe(B
e$B:NMQ$7$J$$$[$&$,$$$$$s$8$c$J$$$+$H;W$C$F$^$9!#e(B

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Yukihiro M. wrote:

|> 1.9.1e$B$G$Oe(Bpre-installed-geme$B$r:NMQ$9$k$D$b$j$O$"$j$^$;$s!#%G%U%)e(B
|> e$B%k%HM-8z2=$5$l$F$$$J$$$N$K:NMQ$7$F$b0UL#$J$$$7!#e(B
|
|e$B$^$?HyL/$J!#e(B

e$B$(!)e(B e$BHyL/!)e(B

e$B$=$l$[$I?<$$0UL#$O$"$j$^$;$s!#$I$&$b$&$^$/$^$D$b$H$5$s$N0U$r5b$a$J$$$h$&e(B
e$B$G!“KhEY2?1}I|$b$7$F$7$^$&$J$!!”$H!#e(B

| e$B%G%U%)%k%H$GM-8z2=$5$l$F$$$J$$$N$K:NMQ$7$F$b0UL#$,$J$$$+$i!“e(B
| 1.9.1e$B$G$Oe(Bpre-installed-geme$B$r:NMQ$9$k$D$b$j$O$J$$!#e(B
|
|e$B$H$$$&$3$H$@$C$?$j$7$^$9e(B? e$B!V0UL#$J$$$7!#!W$H$$$&$H$3$m$+$i$O!“B>$KM}M3$,e(B
|e$B$”$C$F!”$5$i$K!"$H$$$&$3$H$+$b$7$l$^$;$s$,!#e(B

e$B$=$&$$$&$3$H$G$9!#!V0UL#$J$$$7!W$H$$$&$N$O!V0UL#$J$$$+$i!W$He(B
e$B$$$&$D$b$j$J$s$G$9$,!#e(B

e$B$J$k$[$I!#?<FI$_$7$9$.$^$7$?!#e(B

e$B$J$*!"5DO@$,?J$s$G%G%U%)%k%H$Ge(Bgeme$B$+$ie(B
e$B%m!<%I$G$-$k$h$&$K$J$C$?$H$7$F$be(B1.9.1e$B$G$Oe(Bpre-installed-geme$B$Oe(B
e$B:NMQ$7$J$$$[$&$,$$$$$s$8$c$J$$$+$H;W$C$F$^$9!#e(B

e$BF146!#e(BJRubye$B$be(BLeoparde$B$be(Bpre-installed-geme$B$i$7$$$G$9$,!“e(BRubyGemse$B$re(B1.9.1e$B$KI8e(B
e$B=`E:IU$7$F$I$&$J$k$d$i!”>/$7MM;R$r8+$?$$!#e(B1.9.2e$B$G:F8!F$$H$$$&$3$H$G!#e(B

/ / /

e$B$H$b$"$l!“e(B1.9.1e$B$K$Oe(Bpre-installed-geme$B$O$J$7$H$$$&N.$l$G$9!#$3$l$KH?BP0U8+e(B
e$B$N$”$k?M$O$*4j$$$7$^$9!#$^$?!"B>%Q%C%1!<%8$H$NAj@-$H$$$&4QE@$+$i8+$?;~!"e(B
e$B$^$@2?$+LdBj$O;D$C$F$^$9$+$Me(B?

e$B$J$1$l$P!“8e$OEDCf$5$s$H$N5DO@<!Bh$G$9$+$M!#$=$l$O$=$l$H$7$F!”$b$&e(B
drbraine$B$Ke(Bmergee$B$7$F$b$i$C$A$c$C$F$b$$$$$+$Je(B?

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEUAwUBRx9K6h9L2jg5EEGlAQKA5gf4/X8bG3tCKyrtKKj33itX/vcTqXsOh0gE
rpHpmkk0DMlsiCZ0AckSpgiPIYnp96xxdNUc/Tl1VxxtuqBfMSZjod5lCBRoA5JA
fKyUm9pB3T3HBjoo3WVomWcjw/um+mhhwpplDFOOJMPCCSFGI2PkB/hjth3PxJ8Q
9NNxij3Ib6Ts2d8DjAbjUtSIZpTI8FLrDE+XYodVQiEh0DWP3DdmCb6mbr7+YeLg
2sPFCKFrfj7KCPxDrTzAWchn/H5ukO8Pev6EIdZ8ETPRcdpq6QsYpzmxRF2j3b3p
cFUbmYYbFUjKTxXX1gGD4YAaGNwpg/L8/I14gL/M6v0Cmpuool6t
=0ekh
-----END PGP SIGNATURE-----

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

In message “Re: [ruby-dev:32146] Re: Import RubyGems to Ruby 1.9”
on Wed, 24 Oct 2007 22:39:25 +0900, “NAKAMURA, Hiroshi”
[email protected] writes:

|e$B$=$l$[$I?<$$0UL#$O$"$j$^$;$s!#$I$&$b$&$^$/$^$D$b$H$5$s$N0U$r5b$a$J$$$h$&e(B
|e$B$G!“KhEY2?1}I|$b$7$F$7$^$&$J$!!”$H!#e(B

e$B$9$$$^$;$s$M$(!#e(B

|e$B$J$1$l$P!“8e$OEDCf$5$s$H$N5DO@<!Bh$G$9$+$M!#$=$l$O$=$l$H$7$F!”$b$&e(B
|drbraine$B$Ke(Bmergee$B$7$F$b$i$C$A$c$C$F$b$$$$$+$Je(B?

e$B$^$"!“e(Bmergee$B$9$k$3$H$K$5$[$ILdBj$O$J$$$G$7$g$&$7!”$$$$$s$8$ce(B
e$B$J$$$G$7$g$&$+!#e(B

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Yukihiro M. wrote:

|e$B$=$l$[$I?<$$0UL#$O$"$j$^$;$s!#$I$&$b$&$^$/$^$D$b$H$5$s$N0U$r5b$a$J$$$h$&e(B
|e$B$G!“KhEY2?1}I|$b$7$F$7$^$&$J$!!”$H!#e(B

e$B$9$$$^$;$s$M$(!#e(B

e$B$$$($$$(!"C/$,0-$$$d$i!#e(B

|e$B$J$1$l$P!“8e$OEDCf$5$s$H$N5DO@<!Bh$G$9$+$M!#$=$l$O$=$l$H$7$F!”$b$&e(B
|drbraine$B$Ke(Bmergee$B$7$F$b$i$C$A$c$C$F$b$$$$$+$Je(B?

e$B$^$"!“e(Bmergee$B$9$k$3$H$K$5$[$ILdBj$O$J$$$G$7$g$&$7!”$$$$$s$8$ce(B
e$B$J$$$G$7$g$&$+!#e(B

e$B>/$7e(Bruby-deve$B$G$NH?1~$rBT$C$F$+$i0MMj$7$^$9!#e(B

e$B:G6ae(Bdrbraine$B$,L[$j$3$s$G$$$k$N$G!"$A$g$C$H5$$r0-$/$7$F$k$+$b$J$!!#2?$K!“e(B
e$B$+$O$o$+$i$J$$$1$I!#e(B# e$B2x$7$$1Q8l$K!”$+e(B?

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRx9aCR9L2jg5EEGlAQLQUQgAhViYbY487nxJ4Oxa4BxOe5udkoDYBmZV
8G5fz61F2W0ux9InRY62wmacuTyhjU+nEbB/OjBm3ZrL8QGO01XDmZYV782XS9W2
erqSv+9UetyQVARzt0Hq8vCtfZRLxEmMHVYvmDg/A0sArEITPUyz3Y5IPm4iVQdi
XIvlUG7nNm3OJys/lqL/WlvytcYrgn4nHLcFnwbzC9YqrI2/7vaUvp2MAAeB+rZO
VB0t7aP6S+vss6b3VXCZKgHxy6IXVITSky7ubBd+mChn8WvYJ9f1s5WEUKmvayN1
+Z1Id3idB33T6tfMKDiA1VUqQ0MkPnbjRHuITcGi9o4KiLecw1UmBA==
=B6Jk
-----END PGP SIGNATURE-----

In article E1Ika5D-0007fc-GG@x31,
Yukihiro M. [email protected] writes:

e$B!V;~4V$,B-$j$J$=$&!W$H$$$&$N$,:GBg$N>c32$@$HG’<1$7$F$$$^$9!#e(B

e$B;~4V$,B-$j$J$$$N$O%a%b$j>CHq$rM^$($?e(B subset e$B$r:n$k$N$K3+H/$,e(B
e$BI,MW$H$$$&OC$@$H;W$C$F$$$k$s$G$9$,!"e(B[ruby-core:12766] e$B$G<($7e(B
e$B$?$h$&$J%m!<%@$J$iB(:B$K:n$l$^$9$C$F$$$&$+:n$j$^$7$?!#$3$l$Ke(B
e$B$h$j!"e(BRubyGems e$B$rMxMQ$7$J$$>l9g$N%a%b$j>CHq$O=<J,$KM^$($i$le(B
e$B$k$H9M$($F$$$^$9!#e(B

e$B$3$N$h$&$J%m!<%@$G$b=<J,$G$O$J$$$G$9$+e(B?
e$B$=$l$H$b%a%b%j>CHq0J30$KLdBj$,$"$j$^$9$+e(B?

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

In message “Re: [ruby-dev:32149] Re: Import RubyGems to Ruby 1.9”
on Thu, 25 Oct 2007 02:18:59 +0900, Tanaka A. [email protected]
writes:

|> e$B!V;~4V$,B-$j$J$=$&!W$H$$$&$N$,:GBg$N>c32$@$HG’<1$7$F$$$^$9!#e(B
|
|e$B;~4V$,B-$j$J$$$N$O%a%b$j>CHq$rM^$($?e(B subset e$B$r:n$k$N$K3+H/$,e(B
|e$BI,MW$H$$$&OC$@$H;W$C$F$$$k$s$G$9$,!"e(B[ruby-core:12766] e$B$G<($7e(B
|e$B$?$h$&$J%m!<%@$J$iB(:B$K:n$l$^$9$C$F$$$&$+:n$j$^$7$?!#$3$l$Ke(B
|e$B$h$j!“e(BRubyGems e$B$rMxMQ$7$J$$>l9g$N%a%b$j>CHq$O=<J,$KM^$($i$le(B
|e$B$k$H9M$($F$$$^$9!#e(B
|
|e$B$3$N$h$&$J%m!<%@$G$b=<J,$G$O$J$$$G$9$+e(B?
|e$B$=$l$H$b%a%b%j>CHq0J30$KLdBj$,$”$j$^$9$+e(B?

e$B%a%b%j>CHqNL0J30$N$3$H$Oe(B(e$B$o$:$+$J%m!<%I;~4VA}2C$r$N$>$$$Fe(B)e$B!"e(B
e$B;d$O5$$K$7$F$$$^$;$s!#e(B

e$B$G$b!";d$N5$$K$7$F$$$k%a%b%j>CHqNL$H$$$&$N$Oe(B

(a) RubyGemse$B$rMxMQ$7$J$$e(B(Geme$B$G%$%s%9%H!<%k$7$?%i%$%V%i%j$re(B
e$B;H$o$J$$e(B)
(b) Geme$B$G%$%s%9%H!<%k$5$l$?%i%$%V%i%j$Oe(Brequiree$B$9$k$,!"$=$le(B
e$B0J30$Ne(BRubyGemse$B$N5!G=$O;H$o$J$$e(B
(c) Geme$B$N5!G=$r%U%k%;%C%H$G;H$&e(B

e$B$H$$$&$$C$D$N6ILL$G!"0U<1E*$Ke(BRubyGemse$B$r;H$&e(B(c)e$B0J30$N$3$H$r9Me(B
e$B$($F$$$^$9!#e(Bakre$B$5$s$N%m!<%@$G$Oe(B(a)e$B$7$+5
:Q$7$^$;$s$h$M!#e(B(b)e$B$Ke(B
e$B$$$$F$O!"e(BGeme$B$G%$%s%9%H!<%k$5$l$?%i%$%V%i%j$r;H$C$F$$$k0J>e!"e(B
rubygemse$B$N%m!<%Ie(B(e$B$
$h$S$=$l$K$H$b$J$&%a%b%j>CHqNL$N%Z%J%ke(B
e$B%F%#e(B)e$B$OEvA3$@!“$H$$$&9M$(J}$b$”$k$H$O;W$$$^$9$,!“0lHL%f!<%6$Ke(B
e$B$H$C$F%i%$%V%i%j$,e(BGeme$B$G%$%s%9%H!<%k$5$l$?$+$I$&$+$O4X?4$,$J$$e(B
(and e$B@)8f$G$-$J$$e(B)e$B$3$H$J$N$G!”%a%b%j>CHqNLE*%Z%J%k%F%#$b$J$$e(B
e$BJ}$,$$$$$J$"$H!#L5Cc8@$C$F$^$9$+$M!#e(B

                            e$B$^$D$b$He(B e$B$f$-$R$me(B /:|)

In article E1IkkBq-0002pX-GU@x31,
Yukihiro M. [email protected] writes:

(a) RubyGemse$B$rMxMQ$7$J$$e(B(Geme$B$G%$%s%9%H!<%k$7$?%i%$%V%i%j$re(B
e$B;H$o$J$$e(B)
(b) Geme$B$G%$%s%9%H!<%k$5$l$?%i%$%V%i%j$Oe(Brequiree$B$9$k$,!"$=$le(B
e$B0J30$Ne(BRubyGemse$B$N5!G=$O;H$o$J$$e(B
(c) Geme$B$N5!G=$r%U%k%;%C%H$G;H$&e(B

e$B$H$$$&$$C$D$N6ILL$G!"0U<1E*$Ke(BRubyGemse$B$r;H$&e(B(c)e$B0J30$N$3$H$r9Me(B
e$B$($F$$$^$9!#e(Bakre$B$5$s$N%m!<%@$G$Oe(B(a)e$B$7$+5
:Q$7$^$;$s$h$M!#e(B

e$B$O$$!#$=$N$H$*$j$G$9!#e(B

(b)e$B$Ke(B
e$B$$$$F$O!"e(BGeme$B$G%$%s%9%H!<%k$5$l$?%i%$%V%i%j$r;H$C$F$$$k0J>e!"e(B
rubygemse$B$N%m!<%Ie(B(e$B$
$h$S$=$l$K$H$b$J$&%a%b%j>CHqNL$N%Z%J%ke(B
e$B%F%#e(B)e$B$OEvA3$@!“$H$$$&9M$(J}$b$”$k$H$O;W$$$^$9$,!“0lHL%f!<%6$Ke(B
e$B$H$C$F%i%$%V%i%j$,e(BGeme$B$G%$%s%9%H!<%k$5$l$?$+$I$&$+$O4X?4$,$J$$e(B
(and e$B@)8f$G$-$J$$e(B)e$B$3$H$J$N$G!”%a%b%j>CHqNLE*%Z%J%k%F%#$b$J$$e(B
e$BJ}$,$$$$$J$"$H!#L5Cc8@$C$F$^$9$+$M!#e(B

e$B$=$l$rA@$&$J$i!"$J$*$N$3$He(B gem e$B$J%i%$%V%i%j$re(B default
e$B$Ge(B
require e$B$G$-$k$3$H$,=EMW$@$H;W$$$^$9!#e(B

(b) e$B$He(B (c) e$B$N0c$$$O%9%/%j%W%H$,e(B require ‘rubygems’
e$B$9$k$+$Ie(B
e$B$&$+$GH=CG$5$l$k$3$H$K$J$j$^$9!#$=$&$9$k$H!"e(B(b) e$B$N%1!<%9$K$*e(B
e$B$$$F%W%m%0%i%^$,e(B require ‘rubygems’ e$B$r=q$+$J$$e(B
(e$B=q$/I,MW$,L5e(B
e$B$$e(B) e$B$H$$$&>u67$r:n$j>e$2$k$N$,=EMW$G$9!#e(B

e$B$3$l$O!“e(Bdefault e$B$Ge(B require e$B$G$-$J$$$N$G$”$l$P!“e(B
require ‘rubygems’ e$B$H5-=R$9$k$N$O$”$j$=$&$J$3$H$@$+$i$G$9!#e(B
e$B$=$&$9$k$H!“$=$N%9%/%j%W%H$Oe(B (c) e$B$H$_$J$5$l$k$N$G!”$?$H$(e(B
(b) e$B$N%a%b%j>CHq$r2~A1$7$F$b$=$N287C$,<u$1$i$l$^$;$s!#e(B

e$B$^$?!"e(B(a) e$B$N%1!<%9$r5_:Q$9$l$P!"0JA0$h$jIT9,$K$J$k$3$H$O$J$/e(B
e$B$;$^$9!#$D$^$j!"e(BRubyGems e$B$r0JA0$+$i;H$C$F$$$??M$O0JA0$HF1MMe(B
e$B$N%a%b%j>CHq$GMxMQ$G$-$k$o$1$G$9!#e(B

e$B$H$$$&$o$1$G!"e(B

  • (a) e$B$N%1!<%9$r5_$$!"e(B
  • (b) e$B$N%1!<%9$G5_$($k2DG=@-$rA}$d$9$?$a$Ke(B
    e$B%m!<%@$r$D$1$F$*$/$N$,$$$$$s$8$c$J$$$G$7$g$&$+!#e(B

e$B<B:]$Ke(B (b) e$B$N%1!<%9$r5_$($k$+$H$$$&$H!“e(B(e$B$”$Ne(B IRC
e$B%;%C%7%g%se(B
e$B$G=P$F$$$?e(B) library stub e$B$,$R$H$D$N2r$G$O$"$k$N$G$9$,!“e(B
e$B$=$l$Oe(B RubyGems e$B$,0JA0$K<N$F$?$d$j$+$?$J$N$G!”$=$N7P0^$rD4$Ye(B
e$B$k$H$3$m$+$i;O$a$J$$$H$J$s$H$b!#e(B

In article [email protected],
“NAKAMURA, Hiroshi” [email protected] writes:

e$B$I$&$be(Bdrbraine$B$H$O!"e(BIRCe$B$G$J$$$H5DO@$,?J$^$J$$$h$&$G$9$+$i!"0J8ee(BRubyGemse$B$Ne(B
mergee$B$Ne(Bfacilitatione$B$OEDCf$5$s$K$*4j$$$7$^$9!#>e5-$N!V!J;d$+$i!K0MMj$7$^e(B

IRC e$B$GOC$7$?$N$Oe(B 10/16 e$B$N0l2s$3$C$-$j$G!“$=$l0JA0$K$b0J8e$Ke(B
e$B$bOC$7$?$3$H$O$”$j$^$;$s$+$i!"$=$s$J$3$H$r$$$o$l$F$b:$$j$^$9!#e(B

e$B$“$Ne(B IRC e$B%;%C%7%g%s$r%”%l%s%8$7$?$N$C$FC/$G$7$?$C$1e(B?
e$B$5$5$@e(B
e$B$5$se(B?

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

NAKAMURA, Hiroshi wrote:

|e$B$J$1$l$P!“8e$OEDCf$5$s$H$N5DO@<!Bh$G$9$+$M!#$=$l$O$=$l$H$7$F!”$b$&e(B
|drbraine$B$Ke(Bmergee$B$7$F$b$i$C$A$c$C$F$b$$$$$+$Je(B?

e$B$^$"!“e(Bmergee$B$9$k$3$H$K$5$[$ILdBj$O$J$$$G$7$g$&$7!”$$$$$s$8$ce(B
e$B$J$$$G$7$g$&$+!#e(B

e$B>/$7e(Bruby-deve$B$G$NH?1~$rBT$C$F$+$i0MMj$7$^$9!#e(B

e$B$H=q$-$^$7$?$,!"EDCf$5$s$Ne(B[ruby-core:12896]e$B$K$h$l$P!"e(BIRCe$B$K$h$k5DO@$G!"e(B
RubyGemse$BB&$KJQ99$,F~$k$3$H$K$J$C$?$h$&$G$9!#JQ99$H$$$&$N$O!“e(BRubyGemse$B$,e(B
geme$B%a%=%C%I$rFHN)%i%$%V%i%j$KJ,N%$9$k$3$H$,2DG=$G$”$k$H!"e(Bdrbraine$B!J<B<AE*e(B
e$B$K8=:_$Ne(BRubyGemse$B$N%j!<%I%G%Y%m%C%Q!K$,8@$C$?$H$N$3$H!#e(B

e$B$I$&$be(Bdrbraine$B$H$O!"e(BIRCe$B$G$J$$$H5DO@$,?J$^$J$$$h$&$G$9$+$i!"0J8ee(BRubyGemse$B$Ne(B
mergee$B$Ne(Bfacilitatione$B$OEDCf$5$s$K$*4j$$$7$^$9!#>e5-$N!V!J;d$+$i!K0MMj$7$^e(B
e$B$9!W$O%-%c%s%;%k!#e(B

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRx/49x9L2jg5EEGlAQKA+Qf8CG0O0gcmmge4kCBhWJsyocj11yBDjdBl
j8J1ER0Bm0A/ewFpCb1FTQe4lMx71vP1AkJB/dEww63nprHum5K9bnKzgwdSJTZY
GDV3PJvFmz+YTHLrnSYM+cm7qBJUta4coMt3jvSLUjz3W5M9atUurEEfGnQ7j2xr
4p5J2+0wS2MK9Bo3fVGGfYaPZFY8RVNtAiHIWtfxsinuuEsI4nQUeBMjvlxF3r0Y
F3s9NrJBIU9HnQKu3cgJWtVSYNADESw/IqfKpfDlhoCcEhLlv/3yU5tvWdqgutOv
bsL2NBDYiQM4kAgpTG0zew+JzTiL0XjxIDzpSR6/WjZU9oOspzLNzw==
=8faY
-----END PGP SIGNATURE-----

In article [email protected],
Tanaka A. [email protected] writes:

e$BCfED$5$s$N0F$r8!F$$7$?7k2L!“%Q%C%1!<%8%7%9%F%`$H$7$Fe(B
RubyGems e$B$@$1$r9M$($?>l9g$G$b!“e(BRubyGems e$B$r:G=i$K%m!<%I$9$k%3!<e(B
e$B%I$re(B RubyGems e$B%m!<%I;~E@$G$G<h$j=|$1$k$J$I!”$$$/$D$b$NMxE@$,e(B
e$B$”$k$H;W$&$h$&$K$J$j$^$7$?!#e(B[ruby-core:12783]

e$B$G!“e(B[ruby-dev:31321] e$B$N0l0F$H$$$&$b$N$N<BAu$C$F$”$k$s$G$7$ge(B
e$B$&$+e(B?

e$B:n$C$F$_$^$7$?!#e(B

e$B$3$l$K$h$j!"e(B

loader1 = Object.new
def loader1.find_file(feature, exts) … end
$: << loader1

$: << loader2

$: << loader3

$: << loader4

$:.delete loader2

e$B$H$$$&$h$&$K!"e(B$: e$B$KIU$12C$($?$b$N$r:o=|$9$k$3$H$,MF0W$K$G$-e(B
e$B$k$h$&$K$J$j$^$9!#e(B

e$B$I$&$G$7$g$&$+e(B?

Index: file.c

— file.c (e$B%j%S%8%g%se(B 13793)
+++ file.c (e$B:n6H%3%T!<e(B)
@@ -4162,7 +4162,44 @@
}

extern VALUE rb_load_path;
+static ID id_find_file, id_load_file;

+static int check_object_path(VALUE obj, VALUE feature, const char
*const *ext, VALUE *path)
+{

  • int j;
  • VALUE exts = Qnil;
  • VALUE found;
  • if (ext) {
  •    exts = rb_ary_new2(2);
    
  •    for (j = 0; ext[j]; j++)
    
  •        rb_ary_store(exts, j, rb_str_new2(ext[j]));
    
  • }
  • found = rb_funcall(obj, id_find_file, 2, rb_str_dup(feature),
    exts);
  • if (!RTEST(found))
  •    return 0;
    
  • if (rb_respond_to(found, id_load_file)) {
  •    *path = found;
    
  •    return -1;
    
  • }
  • FilePathValue(found);
  • if (ext) {
  •    for (j = 0; ext[j]; j++) {
    
  •        int extlen = strlen(ext[j]);
    
  •        if (extlen <= RSTRING_LEN(found) &&
    
  •            strcmp(RSTRING_PTR(found)+RSTRING_LEN(found)-extlen,
    
  •                   ext[j]) == 0) {
    
  •            *path = found;
    
  •            return j+1;
    
  •        }
    
  •    }
    
  • }
  • else {
  •    *path = found;
    
  •    return 1;
    
  • }
  • rb_raise(rb_eArgError, “invalid library name: %s”,
    RSTRING_PTR(found));
    +}

int
rb_find_file_ext(VALUE *filep, const char *const *ext)
{
@@ -4200,6 +4237,13 @@
for (i=0;i<RARRAY_LEN(rb_load_path);i++) {
VALUE str = RARRAY_PTR(rb_load_path)[i];

  •    if (rb_respond_to(str, id_find_file)) {
    
  •        int ret = check_object_path(str, *filep, ext, filep);
    
  •        if (ret == 0)
    
  •            continue;
    
  •        return ret;
    
  •    }
    
  • FilePathValue(str);
    if (RSTRING_LEN(str) == 0) continue;
    path = RSTRING_PTR(str);
    @@ -4222,7 +4266,7 @@
    {
    VALUE tmp;
    char *f = StringValueCStr(path);
  • char *lpath;
  • int i;

    if (f[0] == ‘~’) {
    path = rb_file_expand_path(path, Qnil);
    @@ -4253,36 +4297,34 @@
    rb_raise(rb_eSecurityError, “loading from non-absolute path %s”, f);
    }

  • if (rb_load_path) {
  • long i;
  • if (!rb_load_path) {
  • return 0; /* no path, no load */
  • }
  • Check_Type(rb_load_path, T_ARRAY);
  • tmp = rb_ary_new();
  • for (i=0;i<RARRAY_LEN(rb_load_path);i++) {
  •  VALUE str = RARRAY_PTR(rb_load_path)[i];
    
  •  FilePathValue(str);
    
  •  if (RSTRING_LEN(str) > 0) {
    
  • rb_ary_push(tmp, str);
  •  }
    
  • }
  • tmp = rb_ary_join(tmp, rb_str_new2(PATH_SEP));
  • if (RSTRING_LEN(tmp) == 0) {
  •  lpath = 0;
    
  • }
  • else {
  •  lpath = RSTRING_PTR(tmp);
    
  • }
  • Check_Type(rb_load_path, T_ARRAY);
  • for (i=0;i<RARRAY_LEN(rb_load_path);i++) {
  •    VALUE str = RARRAY_PTR(rb_load_path)[i];
    
  •    char *found;
    
  •    if (rb_respond_to(str, id_find_file)) {
    
  •        VALUE file = Qnil;
    
  •        if (check_object_path(str, path, 0, &file) == 0)
    
  •            continue;
    
  •        f = StringValueCStr(file);
    
  •        goto found;
    
  •    }
    
  •    FilePathValue(str);
    
  •    if (RSTRING_LEN(str) == 0) continue;
    
  •    found = dln_find_file(f, RSTRING_PTR(str));
    
  •    if (found) {
    
  •        f = found;
    
  •        goto found;
    
  •    }
    
    }
  • else {
  • lpath = 0;
  • }
  • return 0;
  • if (!lpath) {
  • return 0; /* no path, no load */
  • }
  • if (!(f = dln_find_file(f, lpath))) {
  • return 0;
  • }
    +found:
    if (rb_safe_level() >= 1 && !fpath_check(f)) {
    rb_raise(rb_eSecurityError, “loading from unsafe file %s”, f);
    }
    @@ -4492,4 +4534,7 @@
    rb_define_method(rb_cStat, “setuid?”, rb_stat_suid, 0);
    rb_define_method(rb_cStat, “setgid?”, rb_stat_sgid, 0);
    rb_define_method(rb_cStat, “sticky?”, rb_stat_sticky, 0);
  • id_find_file = rb_intern(“find_file”);
  • id_load_file = rb_intern(“load_file”);
    }
    Index: eval_load.c
    ===================================================================
    — eval_load.c (e$B%j%S%8%g%se(B 13793)
    +++ eval_load.c (e$B:n6H%3%T!<e(B)
    @@ -21,6 +21,7 @@
    #endif
    0
    };
    +static ID id_load_file;

static VALUE
get_loaded_features(void)
@@ -364,6 +365,10 @@
}
tmp = fname;
type = rb_find_file_ext(&tmp, loadable_ext);

  • if (type == -1) {
  •    *path = tmp;
    
  •    return 'o';
    
  • }
    tmp = rb_file_expand_path(tmp, Qnil);
    switch (type) {
    case 0:
    @@ -421,7 +426,10 @@
    FilePathValue(fname);
    *(volatile VALUE *)&fname = rb_str_new4(fname);
    found = search_required(fname, &path);
  • if (found) {
  •    if (found == 'o') {
    
  •        result = rb_funcall(path, id_load_file, 0);
    
  •    }
    
  •    else if (found) {
     if (!path || !(ftptr = load_lock(RSTRING_PTR(path)))) {
    

    result = Qfalse;
    }
    @@ -578,4 +586,6 @@

    ruby_dln_librefs = rb_ary_new();
    rb_register_mark_object(ruby_dln_librefs);

  • id_load_file = rb_intern(“load_file”);
    }

e$B1J0f!wCNG=!%6e9)Bg$G$9!%e(B

e$BH/@8>r7o$,$h$/J,$+$i$J$$$N$G$9$,!$e(BProc e$B%*%V%8%’%/%HFbIt$Ne(B
self e$B$NCM$,e(B
e$B$$$D$N4V$K$+2=$1$F$7$^$&8=>]$,=P$F$7$^$$!$:$$C$F$$$^$9!%e(B
e$BNc$($Pe(B

class A
def initialize
@proc = proc{p self.class}
end
def ex
@proc.call
end
end
a = A.new
a.ex
#— e$B2?$+$N=hM}e(B (X) —
a.ex

e$B$N$h$&$J$3$H$r$9$l$Pe(B A, A e$B$r=PNO$9$k$O$:$G$9$,!$e(B
proc e$B%*%V%8%’%/%H$N@8@.$d<h$j07$$!$e(B
e$B$"$k$$$O>e5-e(B (X) e$B$NItJ,$N=hM}FbMF$K$h$C$F$Oe(B
A, <e$B2?$+JL$N%/%i%9e(B>
e$B$H$$$&7k2L$,=P$F$7$^$&$3$H$,$"$k$h$&$G$9!%e(B

e$B%P%$%J%j$Oe(B
ruby 1.9.0 (2007-11-28 patchlevel 0) [i686-linux]
e$B$G$9!%e(B

e$BLdBj$,H/@8$7$?$N$Oe(B ext/sample/tkballoonhelp.rb e$B$G$9!%e(B
e$B>e5-$N8=>]$,H/@8$7$?>l9g!$K\Mh;2>H$7$F$$$k%$%s%9%?%s%9JQ?t$Ke(B
e$B%"%/%;%9$G$-$J$$$?$a!$%(%i!<%@%$%"%m%0$,I=<($5$l$^$9!%e(B
self e$B2=$1$N7k2L$H$7$Fe(B SEGV e$B$H$J$k>l9g$b$"$j$^$9!%e(B

e$B2?$K2=$1$F$$$k$+$r8+$k$?$a$K%9%/%j%W%H$r$$$8$k$He(B
String e$B$K2=$1$?$je(B Array e$B$K2=$1$?$j$H0lDj$7$F$$$^$;$s$,!$e(B
e$B2=$1$k$^$G$N=hM}2aDx$NESCf$GMQ$$$?$$$:$l$+$N%*%V%8%’%/%H$Ke(B
e$B$J$C$F$7$^$C$F$$$k$h$&$G$9!%e(B
e$B$^$?!$0lEY2=$1$F$7$^$C$?8e$O:FEY2=$1$k$3$H$O$J$$$h$&$G$9!%e(B

Thread e$B$O:n$C$F$$$^$;$s$+$i!$e(Bnative thread
e$BMm$_$NLdBj$G$O$J$$$He(B
e$B9M$($F$$$^$9!%e(B

e$B$3$N$h$&$J8=>]$N860x$K$D$$$F!$$I$J$?$+?4Ev$?$j$O$J$$$G$7$g$&$+!%e(B
proc
e$B%*%V%8%’%/%H$KD>@$K$O?($l$F$$$J$$ItJ,$GJQ2=$7$F$7$^$C$F$$$k$N$Ge(B
Ruby/Tk e$B8GM-$NLdBj$H$$$&$o$1$G$O$J$$$h$&$K;W$C$F$$$k$N$G$9$,!%!%!%e(B

P.S.
e$B$H$3$m$G!$e(BProc#binding e$B$C$F$J$/$J$C$?$s$G$9$+!)e(B
e$B:#2s$N8=>]$rD4$Y$k:]$K;H$*$&$H$7$?$iB8:_$7$J$+$C$?$b$N$G!%e(B