質問: 方法としては、 `require 'rmagick'` を使用して画像を結合処理すると思うのですが、 `そもそも解凍したファイルを配列化にして格納することができていない` ため、先に進めていない状況です。 よろしくお願いします。
回答: 上記解決しました。 ``` require 'zip' unzip_images = [] Zip::File.open(@turn_table_zip_file.path) do |input| input.each do |entry| content = input.get_input_stream # zipファイル解凍時、ディレクトリなどの不要なファイルが存在するため、FileTypeをfileに固定 unzip_images << {file_name: entry.name, data: content.read} if entry.ftype == :file end end ``` ### ポイント ・Zipファイルを展開するブロックの外側に空の配列 `unzip_images = []` を生成 → ブロック外で展開したデータを使用したいため。 https://qiita.com/fyhcu/items/5c9dfaed6346b33727f5 ・ Rubyzipのメソッドを使用してファイルを展開 ・Zipファイルの性質上、Zip内にファイル以外のデータも混ざっている。(directory) → これが厄介だった!! ``` if entry.ftype == :file ``` でファイル画像のみ取り出す(これをしないとディレクトリではバイナリーデータが存在しないため、dataの所でエラーが出る。) → これもなかなか詰まってしまった。。 ### Ruby zipのバージョンアップに伴う変更点 今回1.1系と1.2系で違う所が2点あったので共有します。 ``` Zip::InputStream.open(path_to_zip) do |input| ↓ Zip::File.open(path_to_zip) do |input| ``` ``` input.get_next_entry ↓ input.get_input_stream ``` 時間があるときにもう少し詳しく書きます。