Bug #7975

Why __dir__, not __DIR__

Added by Joey Zhou about 1 year ago. Updated about 1 year ago.

[ruby-core:52970]
Status:Rejected
Priority:Normal
Assignee:-
Category:-
Target version:-
ruby -v:2.0 Backport:

Description

There's a FILE in Ruby 1.x, no file
Why dir in Ruby 2.0 is downcase?

It's not consistent.


Related issues

Duplicates ruby-trunk - Feature #3346: __DIR__ revisted Closed 05/26/2010

History

#1 Updated by Zachary Scott about 1 year ago

  • Status changed from Open to Rejected

see #3346

#2 Updated by Yutaka HARA about 1 year ago

That is becuase dir is a method, whereas FILE is not.

$ ruby -ve 'p Kernel.methods'
ruby 2.0.0p0 (2013-02-24 revision 39474) [x8664-darwin12.2.1]
[:sprintf, :format, :Integer, :Float, :String, :Array, :Hash, :warn, :raise, :fail,
:global
variables, :method, :callee, :dir, :eval, .....

dir is prefered to avoid adding a new keyword (see #1961.)

#3 Updated by Tom Wardrop about 1 year ago

=begin
We did not come to any sort of resolution to the naming inconsistency between dir/method and FILE/LINE in any of those mentioned issues.

Should we not add file and line as methods, and perhaps deprecate the keywords FILE and LINE. This would keep it consistant with all the other double-underscore methods. To most developers who perhaps do not know Ruby as intricately as most of the people on this issue tracker, the inconsistency between dir and FILE is not just confusing by name, but the fact that one is a method and one isn't, is doubly confusing. Definitely not principle of least surprise.

This needs to be addressed in my opinion, either through deprecation of FILE and LINE, or by keeping those keywords and simply creating Kernel method equivalents for the sack of a consistant API.

While on the topic, someone also suggested in one of those previous issues, to give dir an optional join argument, so you could do something like this:

(({dir('somefile.txt') # => /Users/admin/somefile.txt}))

I'd predict that at least 90% of use cases for dir will involve joining it to another path or filename. I can't see any harm in adding this. The naming inconstancies are my main concern however.
=end

Also available in: Atom PDF