Issue #15733 has been updated by shevegen (Robert A. Heiler).


I have no personal preference here either way but I can also understand Satoshi's
explanation / confusion.

This may be good to suggest for an upcoming developer meeting. __DIR__ might have
an advantage of being faster than a method and is probably closest to Satoshi's
described case. Kerne#__file__ might be second best; Kernel#__DIR__ would be a bit
strange, though. People might then wonder why an upcased method name would be
added and why there are  not more upcased methods in ruby ... or why there are
then both upcased and lowercased methods in ruby that include __ as part of their
name :) so I think the other two suggestions would be better than the __DIR__ 
suggestion (if any of them could be approved that is).

----------------------------------------
Bug #15733: Inconsistent __FILE__ and Kernel#__dir__
https://bugs.ruby-lang.org/issues/15733#change-77355

* Author: tagomoris (Satoshi TAGOMORI)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 
* Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
This might be duplicated with #7975, #8098 and #3346, but I believe it's worth to revisit.

Now, Ruby has `__FILE__` keyword and `Kernel#__dir__` method. One is of upper-case chars, and the other is of lower-case chars.
I make mistakes always when I want to get the directory name of the current file, to write `__DIR__` (of course, it doesn't exist).
That is because of inconsistency between `__FILE__` and `__dir__`.

I understood the reason why `__dir__` is of lower-case chars (to show it's defined as a method, not keyword), but this inconsistency brings huge confusion to me.
So, in my opinion, Ruby should have one of these options below:

* keyword `__DIR__`
* method alias `Kernel#__DIR__` (as a compromise, but are there any difference between keyword `__DIR__` and `Kernel#__DIR__`?)
* method `Kernel#__file__` (we don't take care of method overheads when we access file systems)




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>