LoginSignup
5
1

More than 5 years have passed since last update.

OpenURIで10KB以下のファイルが開けないよ

Last updated at Posted at 2017-04-04

undefined method 'path' for #<StringIO...に遭遇したため、解決した過程の忘備録です。

RubyでURLから画像などのファイルを開く場合、

OpenURI.open_uri('ファイルのURL')

で大抵は開けます。

で、この戻り値はTempfileになるわけですが、ファイルが10kb以下だった場合にはStringIOになっちゃうみたいです。

この10kbという数字はOpenURI::BufferStringMaxという定数で定義されています。

Class: OpenURI::Buffer

なので、これを一時的に上書きすれば10kb以下のファイルでも対応できそうです。

OpenURI::Buffer.send('const_set', :StringMax, 0)
file = OpenURI.open_uri('10kb以下のファイルのURL')
file.class # => Tempfile

これで開くことができました。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1