[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]