Vagrant仮想ボックス内の基本的なUbuntulucid32イメージでRuby1.9.3p194を使用してRails(3.2.3)アプリケーションを実行しています。仮想ボックスはLeopardで実行されており、その価値があります。アプリケーションでrubyzipを使用してzipアーカイブを解凍しようとしています- 2009_da_lmp.zip
。rubyzipリポジトリの例から直接コードを使用して、アーカイブファイルの内容を一覧表示できることを確認できます。
#f is the absolute path to 2009_da_lmp.zip (string)
Zip::ZipFile.open(f) { |zf| zf.entries[0] }
=> 20090101_da_lmp.csv #that is indeed a file in the archive.
リポジトリ内の例からさらにいくつかのコードを使用して、アーカイブ内の実際のファイルを取得しようとします。
Zip::ZipInputStream.open(f) { |zis|
entry = zis.get_next_entry
print "first line of '#{entry.name}' (#{entry.size} bytes: ) "
puts "'#{zis.gets.chomp}'" }
=> first line of '20090101_da_lmp.csv' (826610 bytes: ) Zlib::DataError:
invalid stored block lengths #and a long stack trace I can provide
#if that might help
Mac OS解凍ユーティリティは、アーカイブを正常に解凍します。ある種のエンコーディング関連のものかどうか疑問に思っていましたが(開発でPostgreSQLを使用するのが面倒にならないようにするため、ロケールはen_US.UTF-8に設定されています)、それが当てはまるかどうかを判断する方法がわかりません。このエラーの原因に関する情報が見つかりません。