$B$^$D$b$H$5$s(B
$BA0ED$G$9!#(B
trunk$B$K(BModule#refinements$B$H$$$&%a%=%C%I$rDI2C$7$?$N$G$9$,!"$5$5$@$5$s$+$i(B
$BF~$l$J$$J}$,$h$$$N$G$O$J$$$+$H$$$&;XE&$,$"$C$?$N$GAjCL$5$;$F$/$@$5$$!#(B
$B$3$l$O!"%l%7!<%P$N%b%8%e!<%k$K(Brefine$B$GDj5A$5$l$?(Brefinement$B$r!"%-!<$r(Brefine$BBP>]$N%/%i%9!"(B
$BCM$r(Brefine$B$9$kF?L>%b%8%e!<%k(B(refine$B$N%V%m%C%/Cf$N(Bself)$B$H$9$k%O%C%7%e$GJV$9%a%=%C%I$G$9!#(B
$BNc$($P!"(B
class C1; end
class C2; end
module M
refine C1 do
$c1_ext = self
end
refine C2 do
$c2_ext = self
end
end
M.refinements #=> {C1 => $c1_ext, C2 => $c2_ext}
$B$N$h$&$JF0:n$r$9$k$b$N$G$9!#(B
$BF3F~$NM}M3$N0l$D$O!">e5-$N(B$c1_ext$B$J$I$OF?L>%b%8%e!<%k$J$N$G%"%/%;%9$7$K$/$$$?$a(B
$B%j%U%l%/%7%g%s(BAPI$B$,$"$C$?J}$,JXMx$G$O$J$$$+$H$$$&$3$H$G$9!#(B
$B$b$&0l$D$NM}M3$O!“0J2<$N$h$&$K(Bprepend$B$HAH$_9g$o$;$k$H!”(Brefinements$B$r%0%m!<%P%k$K(B
$BM-8z$K$G$-$k$H$$$&$3$H$G$9(B($B$=$N$?$a$K%j%U%l%/%7%g%s(BAPI$B$,$[$7$$$H$$$&$3$H$J$N$G(B
$B7k6IF1$8M}M3$G$9$,(B)$B!#(B
M.refinements.each do |klass, refinement|
klass.send(:prepend, refinement)
end
mathn$B$r(Brefinements$B$GCV$-49$($h$&$H$7$?;~$K!"%0%m!<%P%k$KM-8z$K$9$kJ}K!$,$[$7$$$H(B
$B$`$i$1$s$5$s$K8@$o$l$?$3$H$,$-$C$+$1$G$9!#(B
prepend$B$7$?%b%8%e!<%k$O$b$H$N%/%i%9$h$j$b%a%=%C%IC5:w;~$KM%@h$5$l$k$N$G!"$^$5$K(B
$B%0%m!<%P%k$J(Brefinement$B$N$h$&$J$b$N$@$H;W$C$F$$$^$9!#(B
$B$5$5$@$5$s$+$i$O!"<BAu$K0MB8$7$?5!G=$J$N$G!">-Mh<BAuJ}K!$,JQ$o$C$?$i:$$k$N$G$O$J$$$+(B
$B$H$$$&;XE&$,$"$C$?$N$G$9$,!"$=$b$=$b(Brefine$B$N%V%m%C%/$GF?L>%b%8%e!<%k$r(BRuby$B%l%Y%k$K(B
$B8x3+$7$F$7$^$C$F$$$^$9$7!"(Busing
M$B$G(Brefinements$B$rM-8z$K$G$-$k$?$a$K$O$=$l$i$NF?L>(B
$B%b%8%e!<%k$r(BM$B$+$iC)$l$J$$$H$$$1$J$$$N$G!"(BModule#refinements$B$r<BAu$G$-$J$/$J$k$H(B
$B$$$&$N$O:,K\E*$K:#$N;EMM$H$OJL$N$b$N$K$J$k$H$$$&$3$H$@$H9M$($F$$$^$9!#(B
$B$b$A$m$s!"$=$b$=$b:#$N(Brefinements$B$N;EMM$,$I$&$J$N$+$H$$$&OC$O$"$k$G$7$g$&$7!":#$O(B
refinements$B<+BN$,(Bexperimental$B$H$$$&07$$$J$N$G!“7k6IA4ItL5$+$C$?$3$H$K$9$k2DG=@-$b(B
$B$”$k$H;W$$$^$9!#(B