From: Kazuhiro NISHIYAMA Date: 2018-05-15T20:56:06+09:00 Subject: [ruby-list:50664] Re: OSXのNet::HTTPResponse の bodyについて 西山和広です。 On Tue, 15 May 2018 14:46:34 +0900, nst wrote: > test.rb:13:in `write': Invalid argument @ io_write - dum (Errno::EINVAL) > > #このエラーを見てres.bodyがおかしいと気がつくのにかなり時間がかかりました write で 2GiB以上だと EINVAL になっているだけのようなので、 res.body 自体は正常なのではないでしょうか。 $ cat test.rb open("test.txt", "wb") do |f| f.write("x"*(2*1024*1024*1024)) end $ ruby test.rb Traceback (most recent call last): 3: from test.rb:1:in `
' 2: from test.rb:1:in `open' 1: from test.rb:2:in `block in
' test.rb:2:in `write': Invalid argument @ io_write - test.txt (Errno::EINVAL) $ cat test2.rb open("test.txt", "wb") do |f| f.write("x"*(2*1024*1024*1024-1)) end $ ruby test2.rb $ > Ubuntu 16.04では、NoMemoryErrorとなったのでOSX限定?? > $ ruby2.5 ./test.rb > Traceback (most recent call last): > ./test.rb: failed to allocate memory (NoMemoryError) Ubuntu 16.04 だと 2GiB の String を作ろうとした時点で NoMemoryError に なるようなので、別の話のようです。 $ ruby -e '"x"*(2*1024*1024*1024)' Traceback (most recent call last): -e: failed to allocate memory (NoMemoryError) -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA)