4

我正在尝试使用 ruby​​zip 在我的应用程序中动态创建 zip 档案。我以他们的自述文件为起点。我将 gem 添加到我的 Gemfile 中:

gem 'rubyzip'

然后运行bundle install并重新启动 rails 服务器。

我的控制器代码是:

require 'rubygems'
require 'zip'

filename = "#{Time.now.strftime('%y%m%d%H%M%S')}"
input_filenames = ["#{filename}.txt"]
zip_filename = "#{filename}.zip"

Zip::File.open(zip_filename, Zip::File::CREATE) do |zipfile|
  input_filenames.each do |f|
    zipfile.add(f, directory + '/' + f)
  end
end

我得到的错误是:cannot load such file -- zip

我已经尝试过require 'zip/zip',但它会产生相同的错误。

提前致谢!

4

3 回答 3

12

您可能正在查看一个太新的示例。

如果您使用的是Rubyzip 0.9.x,那么您需要遵循以下示例

( require "zip/zip",然后使用Zip::ZipFile代替Zip::File)

require 'zip/zip'

folder = "Users/me/Desktop/stuff_to_zip"
input_filenames = ['image.jpg', 'description.txt', 'stats.csv']

zipfile_name = "/Users/me/Desktop/archive.zip"

Zip::ZipFile.open(zipfile_name, Zip::ZipFile::CREATE) do |zipfile|
  input_filenames.each do |filename|
    # Two arguments:
    # - The name of the file as it will appear in the archive
    # - The original file, including the path to find it
    zipfile.add(filename, folder + '/' + filename)
  end
end
于 2013-07-31T11:20:24.453 回答
5

我建议你使用:

gem 'rubyzip',  "~> 1.1", require: 'zip'

然后require 'zip'在您的控制器中应该可以正常工作。

于 2013-12-18T14:42:45.103 回答
2

rubyzip 的界面已更改。你用的是旧版本。来自 master 分支的 ruby​​doc.info 文档。

于 2013-08-29T07:56:29.697 回答