e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B
e$B85%M%?$Oe(B
http://www.yohasebe.com/diary/diary_search.php?id=142
e$B$J$N$G$9$,!“$3$N%9%/%j%W%H$O!”<B$O8=:_$Ne(B1.8e$B:G?7$*$h$Se(B1.9e$B$G$Oe(B
e$BF0:n$7$^$;$s!#e(B
e$BOC$rC1=c2=$7$F!"e(B
def method
caller.first.sub!(/^.*in `(?:.+?#)?(.+)'$/, ‘\1’)
end
def foo
p method
end
alias bar foo
alias baz foo
foo
bar
baz
e$B$H$$$&%9%/%j%W%He(Btest.rbe$B$,$"$C$?$H$-!"e(B
% ruby-1.6 -v test.rb
ruby 1.6.8 (2003-07-27) [i586-mswin32]
“foo”
“foo”
“foo”
% ruby-1.8.1 -v test.rb
ruby 1.8.1 (2003-12-25) [i386-mswin32]
“foo”
“bar”
“baz”
% ruby-1.8.4 -v test.rb
ruby 1.8.4 (2005-12-25) [i386-mswin32]
“foo”
“bar”
“baz”
% ruby-1.8 -v test.rb
ruby 1.8.4 (2006-03-23) [i386-mswin32]
“foo”
“foo”
“foo”
% ruby-1.9 -v test.rb
ruby 1.9.0 (2006-03-26) [i386-mswin32]
“foo”
“foo”
“foo”
e$B$H$$$&$h$&$K!"e(B1.8e$B7O$N%j%j!<%9HG$N$_7k2L$,0[$J$j$^$9!#e(B
e$B<j85$K$Oe(B1.8.0e$B$,$J$+$C$?$N$G;n$7$F$^$;$s$,!"e(B1.8.0e$B$bB>$N%j%je(B
e$B!<%9HG$HF1MM$N7k2L$K$J$j$^$9!#e(B
aliase$B;~$Ne(Bcallere$B$O$I$&$J$k$Y$-$+!“$H$$$&OC$r9M$(;O$a$k$H!”$$$me(B
e$B$$$mFq$7$$$N$G$9$,!“e(B1.8e$B%j%j!<%97ONsFb$G$N8_49@-$r9M$($k$H!”>/e(B
e$B$J$/$H$be(B1.8e$B7O$G$Oe(Baliase$B$5$l$?L>A0$,<h$l$k$Y$-$G$“$k$H;W$$$^$9!#e(B
e$B$^$?!”$I$C$A$,JXMx$+!"$H$$$&OC$K$J$l$P!"e(Baliase$B$5$l$?L>A0$,<h$le(B
e$B$?J}$,JXMx$J5$$b$7$^$9!#e(B
1.9e$B$G$b!“2a5ne(B(2004e$BG/$H$+e(B)e$B$Oe(Baliase$B$5$l$?L>A0$,<h$l$F$$$?$N$G$9e(B
e$B$,!“e(B1.8e$B$K$;$he(B1.9e$B$K$;$h!”$J$<e(Baliase$B$5$l$?L>A0$,<h$l$k$h$&$K$J$Ce(B
e$B$?$N$+!”$J$<:#$O<h$l$J$/$5$l$?$N$+!“$H$$$&0U?^$O$h$/$o$+$j$^e(B
e$B$;$s!#e(B
e$B$H$$$&$o$1$G!”$U$+!<$$M}M3$,$=$3$K$"$k$J$i$PD|$a$^$9$,!"FC$Ke(B
e$B$J$$$J$i$48!F$$r4j$$$^$9!#e(B
e$B$$^$1$H$7$F!"e(B1.8e$B$$h$Se(B1.9e$B$=$l$>$lMQ$N=$@5e(B(?)e$B%Q%C%A$r$D$1$H$-e(B
e$B$^$9!#e(B
Index: eval.c
RCS file: /home/cvs/ruby/eval.c,v
retrieving revision 1.616.2.166
diff -u -1 -p -r1.616.2.166 eval.c
— eval.c 23 Mar 2006 01:52:02 -0000 1.616.2.166
+++ eval.c 27 Mar 2006 13:05:11 -0000
@@ -6191,3 +6191,3 @@ backtrace(lev)
ruby_sourcefile, ruby_sourceline,
-
rb_id2name(frame->orig_func));
-
}rb_id2name(frame->last_func));
@@ -6216,3 +6216,3 @@ backtrace(lev)
n->nd_file, nd_line(n),
-
rb_id2name(frame->prev->orig_func));
-
}rb_id2name(frame->prev->last_func));
Index: eval.c
RCS file: /home/cvs/ruby/eval.c,v
retrieving revision 1.890
diff -u -1 -p -r1.890 eval.c
— eval.c 23 Feb 2006 04:24:39 -0000 1.890
+++ eval.c 27 Mar 2006 13:05:21 -0000
@@ -1110,3 +1110,3 @@ error_line(struct FRAME *frame, NODE *no
return rb_sprintf(“%s:%d:in `%s’”, file, line,
-
rb_id2name(frame->this_func));
-
rb_id2name(frame->callee)); }
@@ -1123,3 +1123,3 @@ error_line(struct FRAME *frame, NODE *no
rb_class2name(oklass),
-
rb_id2name(frame->this_func));
-
rb_id2name(frame->callee)); }
e$B$=$l$G$O!#e(B