[#113107] [Ruby master Bug#19576] Backport request: Gemfile.lock resolving is broken with bundler shipped with Ruby 3.1.4 — "jprokop (Jarek Prokop) via ruby-core" <ruby-core@...>

Issue #19576 has been reported by jprokop (Jarek Prokop).

8 messages 2023/04/04

[#113112] [Ruby master Bug#19578] abort() shows stack trace when run within rescue clause — "Dan0042 (Daniel DeLorme) via ruby-core" <ruby-core@...>

Issue #19578 has been reported by Dan0042 (Daniel DeLorme).

8 messages 2023/04/04

[#113180] [Ruby master Feature#19588] Allow Comparable#clamp(min, max) to accept nil as a specification — "kyanagi (Kouhei Yanagita) via ruby-core" <ruby-core@...>

Issue #19588 has been reported by kyanagi (Kouhei Yanagita).

7 messages 2023/04/11

[#113209] [Ruby master Bug#19596] Decreased performance after upgrading from ruby 2.7.2 to ruby 3.2.2 — silva96 via ruby-core <ruby-core@...>

Issue #19596 has been reported by silva96 (Benjam=EDn Silva).

7 messages 2023/04/13

[#113238] [Ruby master Misc#19599] DevMeeting-2023-05-10 — "mame (Yusuke Endoh) via ruby-core" <ruby-core@...>

Issue #19599 has been reported by mame (Yusuke Endoh).

14 messages 2023/04/14

[#113285] [Ruby master Bug#19607] Introduce `Hash#symbolize_keys`. — "ioquatix (Samuel Williams) via ruby-core" <ruby-core@...>

Issue #19607 has been reported by ioquatix (Samuel Williams).

8 messages 2023/04/18

[#113303] [Ruby master Feature#19610] GC.delay_promotion — "peterzhu2118 (Peter Zhu) via ruby-core" <ruby-core@...>

Issue #19610 has been reported by peterzhu2118 (Peter Zhu).

9 messages 2023/04/20

[#113313] [Ruby master Bug#19613] Add version information to all function documentation — "fulldecent (William Entriken) via ruby-core" <ruby-core@...>

Issue #19613 has been reported by fulldecent (William Entriken).

7 messages 2023/04/23

[#113342] [Ruby master Feature#19617] Add Method#binding and UnboundMethod#binding, similar to Proc#binding — "nevans (Nicholas Evans) via ruby-core" <ruby-core@...>

Issue #19617 has been reported by nevans (Nicholas Evans).

9 messages 2023/04/25

[#113381] [Ruby master Bug#19624] Backticks - IO object leakage — pineman via ruby-core <ruby-core@...>

Issue #19624 has been reported by pineman (Jo=E3o Pinheiro).

10 messages 2023/04/30

[ruby-core:113230] [Ruby master Bug#18947] Unexpected Errno::ENAMETOOLONG on Windows

From: "inversion (Yura Babak) via ruby-core" <ruby-core@...>
Date: 2023-04-13 18:47:39 UTC
List: ruby-core #113230
Issue #18947 has been updated by inversion (Yura Babak).


Today rechecked that for the latest
**ruby 3.2.2** (2023-03-30 revision e51014f9c0) [x64-mingw-ucrt]
still we have same problems (

----------------------------------------
Bug #18947: Unexpected Errno::ENAMETOOLONG on Windows
https://bugs.ruby-lang.org/issues/18947#change-102777

* Author: inversion (Yura Babak)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt]
* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN
----------------------------------------
On Windows 10, I am working on a script to copy a complex folder structure.

Pathname and FileUtils work fine for me until there is a folder with a **very long path** (>260 chars).

Normally you cannot access such a folder with Ruby.
The next operations will raise `Errno::ENOENT`
``` ruby
Pathname.new(300_chars_path).children
FileUtils.mkpath(300_chars_path)
```


But there is a way in Windows to remove the MAX_PATH limitation.
You can find a small .reg file in this article:
https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry

After changing this system option, things start to work strangely in Ruby.

This will now raise `Errno::ENAMETOOLONG`:
``` ruby
Pathname.new(300_chars_path).children
```

But at the same time, you can create a folder with such a long path and write-read a file in it
``` ruby
FileUtils.mkpath(300_chars_path)
file = Pathname.new(300_chars_path+'/file.txt')
file.write 'oooooooooo'
puts Pathname.new(300_chars_path+'/file.txt').read
```


So you can work with individual items but attempts to list such folders' content fail (`.children`, `.glob`, `.copy`, etc).
In my case, deep `.glob` is broken for all the parent folders of that deep long-path folder ((

The only way I found for listing is
``` ruby
require 'win32ole'
fso = WIN32OLE.new 'Scripting.FileSystemObject'
for file in fso.GetFolder(300_chars_path).files
    file.name
    file.path.length
end
```

But using this workaround breaks all my code workflow built on top of Pathname and FileUtils ((.

So for me, it looks like some operations with long-path folders are not working just because in Ruby there is a check for the path length and not a real operation problem. And in some places (see .mkpath) there is no such check and all works fine.

Also notice that other applications on Windows have no problems with long-path folders (like Total Commander).

Please consider reviewing if we really need to raise `Errno::ENAMETOOLONG` if the `LongPathsEnabled` option is enabled in the Windows registry.




-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/

In This Thread

Prev Next