From: Tanaka Akira Date: 2008-09-26T02:29:43+09:00 Subject: [ruby-dev:36582] Re: adding Pathname#resolve (was: adding Pathname#abspath()) In article <86ljxgd0jt.knu@iDaemons.org>, "Akinori MUSHA" writes: >  しかし、 real という単語が入るのに実際に存在しないパスを返す > のは奇妙ではないでしょうか。あくまで realpath という既知の名前 > からしか機能は想起されないと思います。real_path は気持ち悪いし、 > *_realpath や realpath_* も適当なものが思いつきませんでした。 > bsd_realpath, realpath_butlast, realpath_till_penult, > almost_realpath, not_quite_realpath, ... 奇妙になるかどうかは名前の作りかた次第と思います。たとえば realdir とすれば、real なのは dir と受け取れるでしょう。 dir だけが real とも受け取れるのが問題なのですが。 >  同じ機能は既存の公開および内部メソッドを使っても簡単には実装 > できなかったのでなんとか入れたいと思うのですが。 えーと、 if path.exist? path.realname elsif path.dirname.directory? path.dirname.realpath + path.basename else raise Errno::ENOTDIR end くらいではうまくいきませんかね。 >  ~ の展開と相対パスの展開を行うメソッドが expand_path なので、 > symlink の解決と相対パスの展開を行うメソッドが resolve_path と > いうのは悪くないと思っています。realpath との関連はさほど大事 > でしょうか。 symlink の解決と相対パスの展開を行うというのはまさに realpath で、望まれている機能からは realpath に近いでしょう。 あと、expand_path は ~ を扱うのがいやらしいと思っていて、で きれば無視したいところです。 -- [田中 哲][たなか あきら][Tanaka Akira]