ruby-changes:4007
From: ko1@a...
Date: Sat, 16 Feb 2008 11:46:42 +0900 (JST)
Subject: [ruby-changes:4007] akr - Ruby:r15497 (trunk): * lib/require_relative.rb: check require_relative call in eval.
akr 2008-02-16 11:46:27 +0900 (Sat, 16 Feb 2008) New Revision: 15497 Modified files: trunk/ChangeLog trunk/lib/require_relative.rb Log: * lib/require_relative.rb: check require_relative call in eval. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15497&r2=15496&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/require_relative.rb?r1=15497&r2=15496&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 15496) +++ ChangeLog (revision 15497) @@ -1,3 +1,7 @@ +Sat Feb 16 11:45:31 2008 Tanaka Akira <akr@f...> + + * lib/require_relative.rb: check require_relative call in eval. + Sat Feb 16 08:00:01 2008 NARUSE, Yui <naruse@r...> * ruby.c (process_options): set default_external before loading Index: lib/require_relative.rb =================================================================== --- lib/require_relative.rb (revision 15496) +++ lib/require_relative.rb (revision 15497) @@ -1,6 +1,11 @@ def require_relative(relative_feature) - /:/ =~ caller.first - absolute_feature = File.expand_path(File.join(File.dirname($`), relative_feature)) + c = caller.first + e = c.rindex(/:\d+:in /) + file = $` + if /\A\((.*)\)/ =~ file # eval, etc. + raise LoadError, "require_relative is called in #{$1}" + end + absolute_feature = File.expand_path(File.join(File.dirname(file), relative_feature)) require absolute_feature end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/