From: daniel@...42.com Date: 2021-01-23T02:38:48+00:00 Subject: [ruby-core:102209] [Ruby master Feature#16978] Ruby should not use realpath for __FILE__ Issue #16978 has been updated by Dan0042 (Daniel DeLorme). Interestingly, ruby does _not_ use realpath for `__FILE__`, only for `__dir__` and `require_relative` ``` $ cat test.rb p __dir__ => __FILE__ require_relative "b" $ cat a/b.rb p __dir__ => __FILE__ require_relative "c" $ ln -s a/b.rb $ touch c.rb $ ruby test.rb {"/home/dan42/16978"=>"test.rb"} {"/home/dan42/16978/a"=>"/home/dan42/16978/b.rb"} Traceback (most recent call last): 3: from test.rb:2:in `
' 2: from test.rb:2:in `require_relative' 1: from /home/dan42/16978/b.rb:2:in `' /home/dan42/16978/b.rb:2:in `require_relative': cannot load such file -- /home/dan42/16978/a/c (LoadError) ``` ---------------------------------------- Feature #16978: Ruby should not use realpath for __FILE__ https://bugs.ruby-lang.org/issues/16978#change-90056 * Author: vo.x (Vit Ondruch) * Status: Open * Priority: Normal ---------------------------------------- This is the simplest test case: ~~~ $ mkdir a $ echo "puts __FILE__" > a/test.rb $ ln -s a b $ ruby -Ib -e "require 'test'" /builddir/a/test.rb ~~~ This behavior is problematic, because Ruby should not know nothing about the `a` directory. It was not instructed to use it. I should always refer to the file using the original path and do not dig into the underlying details, otherwise depending on file system setup, one might be forced to used `File.realpath` everywhere trying to use `__FILE__`. -- https://bugs.ruby-lang.org/ Unsubscribe: