Toplevel irb method

e$B!!$5$5$@$G$9!%e(B

e$B!!e(Birb e$B$G4X?t$C$]$$%a%=%C%I$rDj5A$9$k$H!$e(Bpublic
e$B%a%=%C%I$K$J$j$^$9!%e(B

irb(main):001:0> RUBY_VERSION
=> “1.8.5”
irb(main):002:0> def foo; end
=> nil
irb(main):004:0> Object.instance_methods.include?(“foo”)
=> true
irb(main):005:0> 1.foo
=> nil

e$B!!IaDL$K<B9T$9$k$H!$e(Bprivate e$B%a%=%C%I$K$J$j$^$9!%e(B

p RUBY_VERSION
#=> “1.8.6”
def foo; end
p Object.instance_methods.include?(“foo”)
#=> false
1.foo
#=> t.rb:4: private method `foo’ called for 1:Fixnum (NoMethodError)

e$B!!$3$Ne(B irb e$B$N5sF0$O0U?^$7$?$b$N$G$7$g$&$+!%e(B

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

In message “Re: [ruby-dev:32263] toplevel irb method”
on Tue, 13 Nov 2007 22:42:59 +0900, SASADA Koichi [email protected]
writes:

|e$B!!e(Birb e$B$G4X?t$C$]$$%a%=%C%I$rDj5A$9$k$H!$e(Bpublic e$B%a%=%C%I$K$J$j$^$9!%e(B
|e$B!!IaDL$K<B9T$9$k$H!$e(Bprivate e$B%a%=%C%I$K$J$j$^$9!%e(B

|e$B!!$3$Ne(B irb e$B$N5sF0$O0U?^$7$?$b$N$G$7$g$&$+!%e(B

e$B0c$&$s$8$c$J$$$G$7$g$&$+!#e(B

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

In [ruby-dev:32281] the message: “[ruby-dev:32281] Re: toplevel irb
method”, on Nov/14 05:47(JST) Yukihiro M. writes:

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

|e$B!!e(Birb e$B$G4X?t$C$]$$%a%=%C%I$rDj5A$9$k$H!$e(Bpublic e$B%a%=%C%I$K$J$j$^$9!%e(B
|e$B!!IaDL$K<B9T$9$k$H!$e(Bprivate e$B%a%=%C%I$K$J$j$^$9!%e(B
|e$B!!$3$Ne(B irb e$B$N5sF0$O0U?^$7$?$b$N$G$7$g$&$+!%e(B

e$B0c$&$s$8$c$J$$$G$7$g$&$+!#e(B

e$B0l1~e(B, rubye$B$HF1$8?6$kIq$$$r$9$k$N$,L\I8$G$9$N$Ge(B,
e$B0U?^$O$7$F$J$+$C$?$G$9e(B.

e$B$Ge(B, e$B$J$<$3$&$J$C$F$7$^$C$?$+$H$$$&$He(B, irb e$B$G$Oe(B
e$BI>2A$Ne(BBinding e$B$re(B
TOP_LEVEL_BINDINGe$B$G$O$J$/e(B,

@binding = eval("def irb_binding; binding; end; irb_binding",
      TOPLEVEL_BINDING,
      __FILE__,
      __LINE__ - 3)

e$B$r%G%U%)%k%H$N%3%s%F%-%9%H$K$7$F$$$^$9e(B. e$B$3$l$Oe(B,
e$B%5%Ve(Birbe$B$r5/F0$7$?$H$-e(B
e$B$K%m!<%+%kJQ?t$r6&M-$7$J$$$?$a$K$3$&$J$C$F$$$^$9e(B.

e$B$Ge(B, e$B>e5-e(B @binding e$B$Ge(B

eval(“def foo;end”, @binding)

e$B$9$k$He(B, publice$B$J%a%=%C%I$H$J$k$N$G$9e(B.
e$B$3$l$O;EMM$J$N$G$7$g$&$+e(B?

e$B;EMM$@$H$9$k$He(B,
e$BBP$7$?0-$5$r$9$k$o$1$G$b$J$$$N$G$3$N$^$^$[$C$H$/$+e(B, e$BB>e(B
e$B$N%P%$%s%G%#%s%0$r;H$&$+$K$J$k$N$G$9$,e(B…

__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—

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

In message “Re: [ruby-dev:32290] Re: toplevel irb method”
on Wed, 14 Nov 2007 17:19:27 +0900, Yukihiro M.
[email protected] writes:

|e$B<j85$G$Oe(B
|
|@binding = eval(“def irb_binding; binding; end; irb_binding”,
| TOPLEVEL_BINDING,
| FILE,
| LINE - 3)
|
|eval(“def foo; p 42; end”, @binding)
|
|e$B$r<B9T$7$?>l9g!“e(Bfooe$B$Oe(Bprivate methode$B$K$J$j$^$7$?!#$J$K$,0c$&$se(B
|e$B$G$7$g$&$M!#$I$&$be(BYARVe$B$G$Oe(Bvibisibilitye$B>pJs$,e(Bbindinge$B$G$O$J$/!“e(B
|crefe$B$K3JG<$5$l$F$$$k$h$&$G!”@EE*$K2r7h$5$l$F$k$_$?$$$G$9$1$I!“e(B
|e$B$=$l$H4X78$”$k$N$+$J$”!#e(B

e$B$"!"8+Mn$H$7$F$^$7$?!#e(B1.9e$B$G$O$A$c$s$He(Bprivatee$B$K$J$j$^$9!#$C$F!“e(B
e$B85!9$N%a!<%kFI$s$@$ie(B1.8.6e$B$C$F=q$$$F$”$k$7!#e(B

|visibilitye$B$,e(Bcrefe$B$K$“$k$3$H$H$+!”@EE*$K2r7h$5$l$A$c$&e(B(evale$B$Ge(B
|e$B$9$j$+$o$i$J$$e(B)e$B$3$H$H$+$O$I$&$h!“$H$$$&5$$b$7$J$$$G$b$J$$$Ne(B
|e$B$G$9$,!”$=$l$O8e$G9M$($k$3$H$K$7$^$7$g$&!#e(B

1.8e$B$G$Oe(Bknow restrictione$B$H$$$&$3$H$G$I$&$G$7$g$&!)e(B
e$B$b$7$+$7$?$i!“e(BBinding#dupe$B$G%m!<%+%kJQ?t$N%9%3!<%W$r%3%T!<$9e(B
e$B$l$P$$$$$N$+$J$”!#e(B

e$B!!$5$5$@$G$9!%e(B

Yukihiro M. wrote:

visibilitye$B$,e(Bcrefe$B$K$"$k$3$H$H$+!"@EE*$K2r7h$5$l$A$c$&e(B(evale$B$Ge(B
e$B$9$j$+$o$i$J$$e(B)e$B$3$H$H$+$O$I$&$h!"$H$$$&5$$b$7$J$$$G$b$J$$$Ne(B
e$B$G$9$,!"$=$l$O8e$G9M$($k$3$H$K$7$^$7$g$&!#e(B

class C
$b = binding # public
end

eval(‘def foo; p 42; end’, $b)
C.new.foo #=> 42

e$B!!:9$7JQ$o$C$F$k5$$,$7$^$9$,!$$J$s$+4*0c$$$7$F$^$9!)e(B

e$B!!e(B1.9 e$B$N>l9g!$e(Beval e$B$N>l9g$G$Ne(B cref
e$B$,$I$&$N!$$G$O$J$/$F!$!V%a%=%C%Ie(B
e$BFb$Ne(B visibility e$B$,30B&$HF1$8!W$H$$$&LdBj$G$9!%e(B

def foo
def bar
p 42
end
end
foo
self.bar

1.8 => 42

1.9 => e$B%(%i!<!Je(Bprivate e$B$@$+$i!Ke(B

e$B!!$3$l$O$3$l$G9gM}E*$J5$$,$9$k$s$G$9$,!$$I$&$G$7$g$&$+!%e(B

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

In message “Re: [ruby-dev:32289] Re: toplevel irb method”
on Wed, 14 Nov 2007 16:54:42 +0900, [email protected]
(e$B@PDM7=<ye(B) writes:

|e$B0l1~e(B, rubye$B$HF1$8?6$kIq$$$r$9$k$N$,L\I8$G$9$N$Ge(B, e$B0U?^$O$7$F$J$+$C$?$G$9e(B.
|
|e$B$Ge(B, e$B$J$<$3$&$J$C$F$7$^$C$?$+$H$$$&$He(B, irb e$B$G$Oe(B e$BI>2A$Ne(BBinding e$B$re(B
|TOP_LEVEL_BINDINGe$B$G$O$J$/e(B,
|
| @binding = eval(“def irb_binding; binding; end; irb_binding”,
| TOPLEVEL_BINDING,
| FILE,
| LINE - 3)
|
|e$B$r%G%U%)%k%H$N%3%s%F%-%9%H$K$7$F$$$^$9e(B. e$B$3$l$Oe(B, e$B%5%Ve(Birbe$B$r5/F0$7$?$H$-e(B
|e$B$K%m!<%+%kJQ?t$r6&M-$7$J$$$?$a$K$3$&$J$C$F$$$^$9e(B.
|
|e$B$Ge(B, e$B>e5-e(B @binding e$B$Ge(B
|
| eval(“def foo;end”, @binding)
|
|e$B$9$k$He(B, publice$B$J%a%=%C%I$H$J$k$N$G$9e(B. e$B$3$l$O;EMM$J$N$G$7$g$&$+e(B?

e$B%H%C%W%l%Y%k%P%$%s%G%#%s%0$G$O%G%U%)%k%He(Bprivatee$B$H$$$&$N$,;Ee(B
e$BMM$G$9!#$G!“e(B@bindinge$B$O%H%C%W%l%Y%k$G$O$J$$$N$G!”%G%U%)%k%H$Oe(B
publice$B$K$J$j$^$9!#$3$l$rJQ99$9$kJ}K!$,$"$k$N$+$I$&$+$h$/J,$+e(B
e$B$j$^$;$s$,!#e(B

|e$B;EMM$@$H$9$k$He(B, e$BBP$7$?0-$5$r$9$k$o$1$G$b$J$$$N$G$3$N$^$^$[$C$H$/$+e(B, e$BB>e(B
|e$B$N%P%$%s%G%#%s%0$r;H$&$+$K$J$k$N$G$9$,e(B…

e$B<j85$G$Oe(B

@binding = eval(“def irb_binding; binding; end; irb_binding”,
TOPLEVEL_BINDING,
FILE,
LINE - 3)

eval(“def foo; p 42; end”, @binding)

e$B$r<B9T$7$?>l9g!“e(Bfooe$B$Oe(Bprivate
methode$B$K$J$j$^$7$?!#$J$K$,0c$&$se(B
e$B$G$7$g$&$M!#$I$&$be(BYARVe$B$G$Oe(Bvibisibilitye$B>pJs$,e(Bbindinge$B$G$O$J$/!“e(B
crefe$B$K3JG<$5$l$F$$$k$h$&$G!”@EE*$K2r7h$5$l$F$k$_$?$$$G$9$1$I!“e(B
e$B$=$l$H4X78$”$k$N$+$J$”!#e(B

visibilitye$B$,e(Bcrefe$B$K$"$k$3$H$H$+!"@EE*$K2r7h$5$l$A$c$&e(B(evale$B$Ge(B
e$B$9$j$+$o$i$J$$e(B)e$B$3$H$H$+$O$I$&$h!"$H$$$&5$$b$7$J$$$G$b$J$$$Ne(B
e$B$G$9$,!"$=$l$O8e$G9M$($k$3$H$K$7$^$7$g$&!#e(B

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

In message “Re: [ruby-dev:32291] Re: toplevel irb method”
on Wed, 14 Nov 2007 17:29:08 +0900, Yukihiro M.
[email protected] writes:

|1.8e$B$G$Oe(Bknow restrictione$B$H$$$&$3$H$G$I$&$G$7$g$&!)e(B
|e$B$b$7$+$7$?$i!“e(BBinding#dupe$B$G%m!<%+%kJQ?t$N%9%3!<%W$r%3%T!<$9e(B
|e$B$l$P$$$$$N$+$J$”!#e(B

1.9e$B$G$9$G$Ke(BBinding#dupe$B$G%m!<%+%kJQ?t$N%9%3!<%W$r%3%T!<$7$^$9e(B
e$B$M!#$3$l$K9g$o$;$l$P$$$$$N$+$J$"!#e(B

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

In message “Re: [ruby-dev:32292] Re: toplevel irb method”
on Wed, 14 Nov 2007 17:34:56 +0900, SASADA Koichi [email protected]
writes:

|Yukihiro M. wrote:
|> visibilitye$B$,e(Bcrefe$B$K$“$k$3$H$H$+!”@EE*$K2r7h$5$l$A$c$&e(B(evale$B$Ge(B
|> e$B$9$j$+$o$i$J$$e(B)e$B$3$H$H$+$O$I$&$h!“$H$$$&5$$b$7$J$$$G$b$J$$$Ne(B
|> e$B$G$9$,!”$=$l$O8e$G9M$($k$3$H$K$7$^$7$g$&!#e(B
|
|class C
| $b = binding # public
|end
|
|eval(‘def foo; p 42; end’, $b)
|C.new.foo #=> 42
|
|e$B!!:9$7JQ$o$C$F$k5$$,$7$^$9$,!$$J$s$+4*0c$$$7$F$^$9!)e(B

e$B$$$$$(!“$3$NJ8$r=q$$$?;~E@$G$Oe(B1.8e$B$He(B1.9e$B$r:.F1$7$F$$$?$N$G!”;de(B
e$B$NJ}$,4*0c$$$7$F$$$^$9!#e(B

|e$B!!e(B1.9 e$B$N>l9g!$e(Beval e$B$N>l9g$G$Ne(B cref e$B$,$I$&$N!$$G$O$J$/$F!$!V%a%=%C%Ie(B
|e$BFb$Ne(B visibility e$B$,30B&$HF1$8!W$H$$$&LdBj$G$9!%e(B
|
|def foo
| def bar
| p 42
| end
|end
|foo
|self.bar
|# 1.8 => 42
|# 1.9 => e$B%(%i!<!Je(Bprivate e$B$@$+$i!Ke(B
|
|e$B!!$3$l$O$3$l$G9gM}E*$J5$$,$9$k$s$G$9$,!$$I$&$G$7$g$&$+!%e(B

e$B9gM}E*$@$H;W$$$^$9!#%M%9%H$7$?e(Bdefe$B$N0UL#$Oe(BRuby2.0e$B$G$OJQ99$7$he(B
e$B$&$+$H;W$C$F$$$k$N$G!“@5D>!”$I$A$i$G$b$h$$$+$J$H;W$C$F$^$9!#e(B

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

In [ruby-dev:32291] the message: “[ruby-dev:32291] Re: toplevel irb
method”, on Nov/14 17:29(JST) Yukihiro M. writes:

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

1.8e$B$G$Oe(Bknow restrictione$B$H$$$&$3$H$G$I$&$G$7$g$&!)e(B

e$B$=$l$G$b$+$^$$$^$;$s$,e(B,

e$B$b$7$+$7$?$i!“e(BBinding#dupe$B$G%m!<%+%kJQ?t$N%9%3!<%W$r%3%T!<$9e(B
e$B$l$P$$$$$N$+$J$”!#e(B

e$B$=$&$=$&e(B.

b = TOPLEVEL_BINDING.dup

e$B$G9T$1$k$+$J$H;W$C$?$s$G$9$,e(B,
e$B%m!<%+%kJQ?t$r6&M-$7$F$$$k$s$G$9$h$Me(B.
e$B$3$C$A$Ge(B, e$BBP1~$7$F$$$?$@$1$k$He(B irb e$BE*$K$Oe(B
e$B$+$J$j%9%^!<%H$J$s$G$9$,e(B…

e$B8=9T$N%P%$%s%G%#%s%0$N>l9ge(B,
e$B%(%i!<%a%C%;!<%8Ey$G$&$l$7$/$J$$$3$H$,$"$je(B
e$B$J$s$+9)IW$7$F$?5$$,$7$^$9e(B.

__
---------------------------------------------------->> e$B@PDMe(B
e$B7=<ye(B <<—
---------------------------------->> e-mail: [email protected] <<—

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

In message “Re: [ruby-dev:32298] Re: toplevel irb method”
on Fri, 16 Nov 2007 02:34:33 +0900, [email protected]
(e$B@PDM7=<ye(B) writes:

|>e$B$b$7$+$7$?$i!“e(BBinding#dupe$B$G%m!<%+%kJQ?t$N%9%3!<%W$r%3%T!<$9e(B
|>e$B$l$P$$$$$N$+$J$”!#e(B
|
|e$B$=$&$=$&e(B.
|
|b = TOPLEVEL_BINDING.dup
|
|e$B$G9T$1$k$+$J$H;W$C$?$s$G$9$,e(B, e$B%m!<%+%kJQ?t$r6&M-$7$F$$$k$s$G$9$h$Me(B.
|e$B$3$C$A$Ge(B, e$BBP1~$7$F$$$?$@$1$k$He(B irb e$BE*$K$Oe(B e$B$+$J$j%9%^!<%H$J$s$G$9$,e(B…

e$B$s$8$c!"e(B1.8e$B$G$be(Bdupe$B$G$$$1$k$h$&$K$7$^$9!#e(B1.9e$B$G$O$9$G$K$=$&$J$Ce(B
e$B$F$^$9$7!#5$$,8~$1$Pe(B1.9e$B8~$1e(Birbe$B$G$O@h9T$7$FJQ99$7$F$$$?$@$$$Fe(B
e$B$b9=$$$^$;$s!#e(B

|e$B8=9T$N%P%$%s%G%#%s%0$N>l9ge(B, e$B%(%i!<%a%C%;!<%8Ey$G$&$l$7$/$J$$$3$H$,$"$je(B
|e$B$J$s$+9)IW$7$F$?5$$,$7$^$9e(B.

e$B$?$7$+e(Birb_bindinge$B$r:o$C$F$^$7$?$h$M!#e(B