2009-12-17 40 views
13

Tôi có một loạt tệp trong một thư mục. Tôi muốn nén một số người trong số họ lại với nhau thành một kho lưu trữ zip.Làm thế nào để tạo một kho lưu trữ zip bằng Ruby on Rails?

Tôi có thể thấy có varioussolutions để làm như vậy. Tôi có thể sử dụng một viên ngọc như rubyzip hoặc chạy exec và chỉ sử dụng công cụ dòng lệnh.

Điều này sẽ tác động đến một phần quan trọng của hệ thống mà tôi đang thực hiện, vì vậy tôi muốn có một số phản hồi và/hoặc chỉ đường về cách tạo tệp zip bằng Rails.

Trả lời

13

rubyzip là lựa chọn tốt. Tôi đã sử dụng nó để nén tệp đính kèm trong tin nhắn riêng tư trong một ứng dụng xã hội mà tôi đã từng làm trước đây. Tuy nhiên, nếu các tệp bạn đang nén có kích thước lớn, thì bạn nên thực hiện một số xử lý nền bằng cách sử dụng delayed_job chẳng hạn.

+0

Cảm ơn bạn đã trả lời. Về rubyzip, nó có được duy trì hoặc ít nhất là hoàn toàn hoạt động không? Và cảm ơn cho delay_job, nó có vẻ như là một bước tiếp theo tốt đẹp cho những gì tôi đang cố gắng để làm – marcgg

+0

Tôi không làm việc trên dự án đó nữa nhưng tôi tin rằng nó hoạt động. Dù sao bạn vẫn có thể sử dụng exec và gửi lệnh đến linux để thực hiện nó. – khelll

+4

Rubyzip là một lựa chọn tốt; nếu sau đó bạn sẽ cần mở rộng mã để giải nén nội dung của tệp lưu trữ, bạn có thể dễ dàng thêm vào đó và bạn sẽ không phụ thuộc vào bất kỳ chương trình bên ngoài nào. Nói chung (thậm chí nó có thể không phải là trường hợp của bạn), bằng cách sử dụng một viên ngọc là giải pháp tốt hơn, IMO. – kiamlaluno

5

Nếu bạn chỉ nén các tập tin và không làm bất cứ điều gì khác thì tôi sẽ đề nghị sử dụng exec hoặc hệ thống hoặc% x để thực hiện việc nén vì cài đặt và sử dụng đá quý cho nhiệm vụ nhỏ như vậy không có ý nghĩa nhiều.

Tuy nhiên, nếu bạn muốn làm nhiều hơn là chỉ nén một số thư mục và sử dụng các chức năng khác mà gem cung cấp thì lựa chọn hiển nhiên sẽ là sử dụng đá quý rubyzip.

+3

Tại sao nó sẽ là xấu để sử dụng một đá quý cho chỉ nén? Bạn có thể xây dựng? – marcgg

+3

Bạn chỉ cần thêm một lớp trừu tượng không cần thiết. Exec gọi trực tiếp lệnh hệ thống, tải một gem sẽ có phí trên bộ nhớ mà không có lý do chính đáng. Nếu bạn sẽ sử dụng các tính năng khác của đá quý, mặc dù tất cả các phương tiện sử dụng nó. – bensie

+0

chính xác những gì bensie đã nói – nas

-3

nếu gzip là một tùy chọn, tôi khuyên bạn nên Gzip được nhúng trong ActiveSupport

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