Rubyでバイナリファイルをダウンロードする
画像などをRubyスクリプト上からダウンロードする
wb
rb
といったbのついたモードを使うというのがポイント。 image.read
とかやると全部メモリに載ってしまうのでreadで少しずつ取ってきて書き込み、ということをしている。
追記
上記のようにURI.openにstringリテラルを渡している場合は良いが、外部からの入力によってURLを組み立てているケースなどでは注意が必要とのこと。下記のRubocopルールに引っかかって知った。
上記ページにも書いているが URI.parse(url).open('rb') do ...
とするのが良い