[ruby-core:77545] [Ruby trunk Bug#12814] Pathname#each_child(false) produces unusable file paths

From: shyouhei@...
Date: 2016-10-11 01:12:45 UTC
List: ruby-core #77545
Issue #12814 has been updated by Shyouhei Urabe.


It's true you can't infer a realpath from `with_directory=false`-yielded file paths.  Yes.  But isn't it intentional?  You requested to cut where the path was from.  Pretty natural you can no longer infer its origin.

The RDoc says it guarantees to include info enough to infer the realpath "By default", and you are requesting something not default.  I think the behavour is by design.

----------------------------------------
Bug #12814: Pathname#each_child(false) produces unusable file paths
https://bugs.ruby-lang.org/issues/12814#change-60812

* Author: Mr. Tao
* Status: Feedback
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
I tried to iterate over items in a directory with `each_child` testing each item whether it is a directory or not with `directory?`. This was working just fine until I added **`false`** as an argument to `each_child`.

~~~ ruby
Pathname.new('.').each_child { |f| p f.realpath } # works as expected
Pathname.new('.').each_child(false) { |f| p f.realpath } # throws an error
~~~

As per Ruby doc "By default, the yielded pathnames will have enough information to access the files.", however pathnames yielded with `with_directory=false` are completely useless as file paths.



-- 
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>

In This Thread

Prev Next