Forum: Ruby-core [ruby-trunk - Bug #7729][Open] __dir__ returns a absolute dir path

Posted by authorNari (Narihiro Nakamura) (Guest)
on 2013-01-23 05:54
(Received via mailing list)
Issue #7729 has been reported by authorNari (Narihiro Nakamura).

----------------------------------------
Bug #7729: __dir__ returns a absolute dir path
https://bugs.ruby-lang.org/issues/7729

Author: authorNari (Narihiro Nakamura)
Status: Open
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2013-01-23 trunk 38552) [x86_64-linux]


Hi.

__dir__ returns a absolute dir path. It seems like a bug.

I've attached a patch.
mame-san, can I commit it to 2.0.0?

# This issue is reported here: 
https://github.com/ruby/ruby/commit/805b08f2925f5c...
# Thanks!
Posted by kosaki (Motohiro KOSAKI) (Guest)
on 2013-01-23 14:29
(Received via mailing list)
Issue #7729 has been updated by kosaki (Motohiro KOSAKI).


> __dir__ returns a absolute dir path. It seems like a bug.

Why?


> +rb_current_relative_realfilepath(void)

A name of rb_current_realfilepath() seems to be derived from realpath(3) 
(i.e. imply absolute path and
resolved symlink). so, relative_realpath seems a bit strange to me.

----------------------------------------
Bug #7729: __dir__ returns a absolute dir path
https://bugs.ruby-lang.org/issues/7729#change-35550

Author: authorNari (Narihiro Nakamura)
Status: Open
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2013-01-23 trunk 38552) [x86_64-linux]


Hi.

__dir__ returns a absolute dir path. It seems like a bug.

I've attached a patch.
mame-san, can I commit it to 2.0.0?

# This issue is reported here: 
https://github.com/ruby/ruby/commit/805b08f2925f5c...
# Thanks!
Posted by shugo (Shugo Maeda) (Guest)
on 2013-01-23 14:36
(Received via mailing list)
Issue #7729 has been updated by shugo (Shugo Maeda).


authorNari (Narihiro Nakamura) wrote:
> __dir__ returns a absolute dir path. It seems like a bug.

I doubt it.

Have you read the discussions in #3346?
I guess __dir__ should return an absolute path in case the current 
directory is changed.

Do you have any reason to make __dir__ return a relative path?

----------------------------------------
Bug #7729: __dir__ returns a absolute dir path
https://bugs.ruby-lang.org/issues/7729#change-35551

Author: authorNari (Narihiro Nakamura)
Status: Open
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2013-01-23 trunk 38552) [x86_64-linux]


Hi.

__dir__ returns a absolute dir path. It seems like a bug.

I've attached a patch.
mame-san, can I commit it to 2.0.0?

# This issue is reported here: 
https://github.com/ruby/ruby/commit/805b08f2925f5c...
# Thanks!
Posted by authorNari (Narihiro Nakamura) (Guest)
on 2013-01-23 15:32
(Received via mailing list)
Issue #7729 has been updated by authorNari (Narihiro Nakamura).


shugo (Shugo Maeda) wrote:
> authorNari (Narihiro Nakamura) wrote:
> > __dir__ returns a absolute dir path. It seems like a bug.
>
> I doubt it.
>
> Have you read the discussions in #3346?
> I guess __dir__ should return an absolute path in case the current directory is 
changed.
>
> Do you have any reason to make __dir__ return a relative path?

File.dirname(__FILE__) returns a relative path. This is only my reason.
But you're opinion is certainly true.
I agree __dir__ returns an absolute path to keep the right location.

----------------------------------------
Bug #7729: __dir__ returns a absolute dir path
https://bugs.ruby-lang.org/issues/7729#change-35555

Author: authorNari (Narihiro Nakamura)
Status: Open
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2013-01-23 trunk 38552) [x86_64-linux]


Hi.

__dir__ returns a absolute dir path. It seems like a bug.

I've attached a patch.
mame-san, can I commit it to 2.0.0?

# This issue is reported here: 
https://github.com/ruby/ruby/commit/805b08f2925f5c...
# Thanks!
Posted by SASADA Koichi (Guest)
on 2013-01-23 18:28
(Received via mailing list)
(2013/01/23 23:31), authorNari (Narihiro Nakamura) wrote:
> File.dirname(__FILE__) returns a relative path. This is only my reason.

$ cat t.rb
p [:__FILE__, __FILE__]
p [:__dir__, __dir__]
require './t'
$ ruby t.rb
#=>
[:__FILE__, "t.rb"]
[:__dir__, "c:/ko1/src/rb"]
[:__FILE__, "c:/ko1/src/rb/t.rb"]
[:__dir__, "c:/ko1/src/rb"]

Only the first script returns relative path by __FILE__.
I think all of __FILE__ and __dir__ should return absolute path.

# BTW, why it returns relative path?
Posted by authorNari (Narihiro Nakamura) (Guest)
on 2013-01-24 03:33
(Received via mailing list)
Issue #7729 has been updated by authorNari (Narihiro Nakamura).

Status changed from Open to Rejected

I've rejected this ticket, because I think it's not a bug.

ko1 (Koichi Sasada) wrote:
>  [:__dir__, "c:/ko1/src/rb"]
>  [:__FILE__, "c:/ko1/src/rb/t.rb"]
>  [:__dir__, "c:/ko1/src/rb"]
>
>  Only the first script returns relative path by __FILE__.
>  I think all of __FILE__ and __dir__ should return absolute path.
>
>  # BTW, why it returns relative path?
>

I see. Could you open a new ticket for this comment?
----------------------------------------
Bug #7729: __dir__ returns a absolute dir path
https://bugs.ruby-lang.org/issues/7729#change-35568

Author: authorNari (Narihiro Nakamura)
Status: Rejected
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2013-01-23 trunk 38552) [x86_64-linux]


Hi.

__dir__ returns a absolute dir path. It seems like a bug.

I've attached a patch.
mame-san, can I commit it to 2.0.0?

# This issue is reported here: 
https://github.com/ruby/ruby/commit/805b08f2925f5c...
# Thanks!
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.