このテーマに関する別のスレッドがあることは知っていますが、すべてのソリューションを使用した後でも、この問題に直面しています。 Zipファイルを生成する他の方法はありますか? Ubuntuシステムコマンドを使用できますか?
やった
gem install rubyzip
私が持っています
require 'rubygems'
require 'Zip/zip'
私のコントローラーで
しかし、それでも同じエラーが発生します-そのようなファイルをロードしません-Zip/zip Ruby 1.8.7とRuby 1.9.2with Rails Ubuntuでは3.0.5
手伝っていただけませんか?ありがとう。
たくさんの時間を費やした後、私はついに欠けている部分を見つけました。 rubyzip
gemを使用する場合、Zip/zip
も必要でした。
これをGemfileに追加します
gem 'rubyzip', :require => 'Zip/zip'
gem 'rubyzip
を追加するだけではうまくいきませんでした。
Gemfileでgemバージョン0.9.9を指定することで、この問題を修正しました。
gem 'rubyzip', "~> 0.9.9"
Rubyzip(1.0.0)を使用するとエラーが発生しました。 rubyzip gihub にこれに関するメモがあります:
Rubyzipインターフェースが変更されました!!!クラス名の「Zip/zip」とZipプレフィックスを削除する必要はありません。サードパーティの宝石に問題があり、rubyzipが必要な場合は、次の一時的な修正を使用できます。
# Place this line before your library or on the head of your Gemfile gem 'rubyzip', '< 1.0.0'
@eagorの回答に基づいて、rubyzip> = 1.0を使用したいが、下位互換性が必要な場合は、これをGemfileに追加します。
gem 'Zip-zip'
レガシーコードの更新を保存します。
Rubyzipを1.0.0にアップグレードする場合は、require 'Zip/zip'
をrequire 'Zip'
に変更してください。
また、解凍プロセスで次のものが使用されていることを確認してください。
Zip::ZipFile.open(self.data) do |zipfile|
ない
Zip::Zipfile.open(self.data) do |zipfile|
ZipFileの大文字のFが違いを生みます。
私の場合、私はから変更する必要がありました
Zip::File.open(...)
に
Zip::ZipFile.open(...)
もちろん、これもGemfileに追加する必要があります。
gem 'rubyzip', :require => 'Zip/zip'
rubyzip
に問題があり、このスレッドに出くわした人は、いつでも外部のコマンドラインZipユーティリティにシェルアウトできることを忘れないでください。 Googleから見つけることができる無料のコマンドラインユーティリティがいくつかあります。選択したコマンドラインZipプログラムをインストールし、それがシステムパス上にあることを確認したら、バッククォートを使用してRuby内からプログラムを駆動します。もちろん、これはHerokuなどで実行されているWebアプリケーションでは機能しません。