2011-05-13 27 views
25

Tôi biết có một chủ đề khác về chủ đề này nhưng tôi vẫn gặp vấn đề này ngay cả sau khi sử dụng tất cả các giải pháp. Có cách nào khác để tạo tệp zip không? Tôi có thể sử dụng lệnh hệ thống Ubuntu không?Sử dụng lỗi rubyzip - không có tệp như vậy để tải - zip/zip

tôi đã làm

gem install rubyzip 

Tôi có

require 'rubygems' 
require 'zip/zip' 

trong điều khiển của tôi

Nhưng tôi vẫn nhận được cùng một lỗi - không có tập tin để tải - zip/zip tôi đã cố gắng với cả hai ruby ​​1.8.7 và ruby ​​1.9.2 với đường ray 3.0.5 trên Ubuntu

Bạn có thể p cho thuê giúp tôi? Cảm ơn.

+0

Bạn đã bao giờ tìm thấy giải pháp chưa? Tôi đang trong tình trạng tương tự. Cảm ơn –

+0

Nope tôi vẫn đang tìm kiếm các giải pháp, nó hoạt động trong vỏ irb nhưng không phải với đường ray. – coredump

+0

Hãy chắc chắn rằng bạn có 'gem' rubyzip'' trong Gemfile của bạn. Ngoài ra, nó phụ thuộc vào chức năng của rubyzip bạn đang sử dụng, nhưng bạn có thể cần phải sử dụng 'require' zip/zipfilesystem'' ngoài những gì bạn có ở trên. –

Trả lời

22

Sau khi dành nhiều thời gian, cuối cùng tôi đã tìm ra phần còn thiếu. Khi sử dụng đá quý rubyzip, tôi cũng phải yêu cầu zip/zip.

Thêm phần này vào Gemfile bạn

gem 'rubyzip', :require => 'zip/zip'

Chỉ cần thêm gem 'rubyzip không làm việc cho tôi.

+2

điều này đã không làm việc trong trường hợp của chúng tôi. –

+0

đã làm việc cho tôi sau khi tôi thay đổi thành ...: require => 'zip' trong Gemfile và trong mã ứng dụng để yêu cầu 'zip' – Straff

1

Đối với bất kỳ ai khác có vấn đề với rubyzip và đi qua chủ đề này: hãy nhớ rằng bạn luôn có thể bung ra một tiện ích zip dòng lệnh bên ngoài. Có một số tiện ích dòng lệnh miễn phí mà bạn có thể tìm thấy thông qua Google. Một khi bạn cài đặt chương trình zip dòng lệnh của bạn lựa chọn và chắc chắn rằng nó là trên đường dẫn hệ thống, chỉ cần sử dụng backticks để lái nó từ bên trong Ruby. Tất nhiên, điều này sẽ không làm việc cho các ứng dụng web mà đang chạy trên Heroku vv

3

Cũng đảm bảo rằng quá trình giải nén của bạn sử dụng:

Zip::ZipFile.open(self.data) do |zipfile| 

không

Zip::Zipfile.open(self.data) do |zipfile| 

Vốn F trên ZipFile tạo sự khác biệt.

1

Trong trường hợp của tôi, tôi là cần thiết để thay đổi từ

Zip::File.open(...) 

để

Zip::ZipFile.open(...) 

tất nhiên tôi cũng cần phải thêm video này vào Gemfile:

gem 'rubyzip', :require => 'zip/zip' 
23

Tôi cố định vấn đề này bằng cách chỉ định đá quý phiên bản 0.9.9 trong Gemfile:

gem 'rubyzip', "~> 0.9.9" 

Sử dụng rubyzip (1.0.0) gây ra lỗi. Có một lưu ý về điều này trên rubyzip gihub:

Giao diện Rubyzip đã thay đổi !!! Không cần phải yêu cầu "zip/zip" và tiền tố Zip trong tên lớp bị xóa.Nếu bạn có vấn đề với bất kỳ bên thứ ba đá quý những gì cần thiết rubyzip bạn có thể sử dụng tiếp theo sửa chữa tạm thời:

# Place this line before your library or on the head of your Gemfile 
gem 'rubyzip', '< 1.0.0' 
+1

Bạn phải sử dụng rubyzip (1.0.0) gây ra lỗi. –

+0

thú vị như thế nào câu hỏi này đã được hỏi lâu trước khi 1.0.0 được phát hành – eagor

+1

Cảm ơn! Đã lưu thời gian của tôi! –

18

xây dựng trên @ của eagor câu trả lời, nếu bạn muốn sử dụng rubyzip> = 1.0 nhưng cần phải tương thích ngược thêm video này vào Gemfile của bạn:

gem 'zip-zip' 

Tiết kiệm cập nhật mã di sản.

+2

gem install 'zip-zip' hoạt động cho tôi –

+0

Tôi đã thêm nó vào Gemfile. va no đa hoạt động! –

Các vấn đề liên quan