問題タブ [rubyzip]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - RubyZip が失敗する - 閉じられたストリーム
次のルビーコードを含むシェフクックブックがあります。
アーティファクト リポジトリに圧縮されてアップロードされた zip ファイルがあり、このコードを受信するためのエンドポイントを指定します。
これは投稿に記載されているヘルパー関数を使用しますが、実行すると次のエラーが発生します。
ここで「クローズド ストリーム」が表示される理由がわかりません。
ruby-on-rails - NameError - 初期化されていない定数 Zip
Spree プラグインでファイルを解凍しようとしています。
このようなモジュールで解凍方法を定義します。
Gemfile に rubyzip gem を含めました。
実行しようとすると、次のエラーが発生します。
stackoverflow や他のサイトで提供されているすべてのソリューションを試しました。現在1.2.0になっているrubyzipのバージョンをダウングレードして、 or を追加してみrequire 'zip'
ましrequire 'zip/zip'
た。どちらもロードエラーを返しました。
require 'zip/filesystem'
クラスに追加してみました。しかし、得た
これに対する解決策はありますか?
ruby - 初期化されていない定数 Zip::Archive
最初は zipruby gem を使用し、Rails 環境をアップグレードして rubyzip に切り替えようとしました。次に、これに相当するものは何でしょうか。
gem ファイルで gem を使用 - gem 'rubyzip',gem 'nokogiri',rails-4.1.9,ruby -2.2
問題 - 初期化されていない定数 Zip::Archive
ruby - rubyzip Zip::FileSystem::ZipFsDir globメソッドが壊れていますか?
glob
バージョン 1.2.0 を使用して、オブジェクトを呼び出そうとすると奇妙な結果が得られZipFsDir
ます。Rails コンソールで:
メソッドが に対して未定義であると報告されているのはなぜZip::FileSystem::ZipFileNameMapper
ですか? ZipFsDir
オブジェクトで呼び出しました。ドキュメントには、 ZipFsDir インスタンス メソッドglob
として明確に記載されています。
ruby-on-rails - RubyZIPを使用して既存のファイルをZIPファイルに追加するには?
私の Rails 4.2 アプリケーションでは、RubyZIPを使用して、次のようなコントローラー アクションを作成しています。
この例では、2 つのファイルが動的に作成されて書き込まれ、ZIP ファイルに保存されます。
しかし、既存のファイル (!) を ZIP ファイルに追加するにはどうすればよいですか?たとえば、私の/app/assets/documents
フォルダーの PDF ファイルはどうすればよいでしょうか?
これははるかに簡単に達成できるはずですが、ドキュメントが見つかりません。
助けてくれてありがとう。
ruby - rubyzipの出力文字列と書き込んだファイルのmd5sumが違う
ruby 2.2.1 で rubyzip-1.2.0 を使用して、単一のファイル (この場合は Python スクリプト) を含む zip ファイルを生成しています。コンテンツ ファイルは変更されず、生成された zip 文字列の md5sum は同じままですが、zip 文字列をファイルに書き込んでから読み取ると、長さが増加し、md5sum は毎回異なります。File.open(zip_file, 'wb') {}
これは、またはを使用するかどうかに関係なく発生しますIO.binwrite(zip_file, zip_string)
。
さらに嬉しいことに、OS X では、zip 文字列と書き込まれるファイルのサイズが異なります (もちろん、md5sum も異なります) が、Ubuntu 14.04 では、サイズは一貫しており、md5sum も異なります。
一時停止せずにファイルを複数回生成すると、チェックサムは(通常)同じになります。スリープ状態にすると、それらは異なります。これにより、rubyzip が何らかのタイムスタンプをファイルに書き込んでいるのかどうか疑問に思います。
おそらく、Ruby バイナリ ファイル処理のニュアンスが欠けているだけです。
OS X での出力:
Ubuntu 14.04 での出力:
説明または回避策はありますか?ファイルを書き換える前に、zip ファイルの内容が異なることを確認したい。
ファイル md5sum を修正し、出力を更新するために編集されました。
編集 そして実際、rubyzip は各エントリに現在のタイムスタンプを入れます (なぜ?)。エントリ属性を操作できるようにモンキー パッチを適用すると、zip 文字列の md5sum は一定のままになります。
ruby-on-rails - xlsx ファイルを rubyzip を使用して圧縮し、Windows で解凍すると、MS Excel でエラーが発生する
実際、私の要件は、いくつかのファイルをいくつかのフォルダーに圧縮することです。サーバーにはすでに多くのファイルが保存されており、いくつかのオブジェクトに関連付けられています。したがって、1 つのオブジェクトに関連するすべてのファイルを次のように圧縮する必要があります。
- メインフォルダー
- サブフォルダー
- 別のフォルダ
- XLSX ファイル
- 別のフォルダ
- サブフォルダー
これは私のヒエラルキーの例です。私がしたことは、これらのフォルダーを作成して、それらのフォルダー内のファイルをコピーし、次のコードを使用して zip を作成することです。
rubyzip ライブラリ自体にあります。しかし、このファイルを Windows で解凍して Microsoft Excel で開くと、次のエラーが表示されます。
'FileName.xlsx' の一部のコンテンツに問題が見つかりました。できる限り復旧を試みますか? このブックの発行元が信頼できる場合は、[はい] をクリックします。
[はい] を押すとファイルが復元されますが、このエラーが発生する理由がわかりません。正常に動作しているサーバーにコピーされたときにExcelファイルを開こうとしましたが、圧縮して解凍するとエラーが発生します。このトピックについて、次のようなさまざまな問題を見てきました。
rubyzip で圧縮された xlsx が Excel で読めない
しかし、助けはありませんでした。
私がもっとやろうとしたのは、圧縮レベルを設定するようなものでZlib::DEFAULT_COMPRESSION
、rubyzip に設定しようとしましたが、それでも同じ問題がありました。また、いくつかの場所で、さらには readme の場合でも rubyzip を使用できることがわかりました。
write_buffer
代わりに使用open
そして、この行で使用してみました(私が見つけた最高のもの):
しかし、別の例外が発生したため、これが解決策である場合、使用方法がわかりません。