Từ các tài liệu Heroku trên read-only filesystem:
Có hai thư mục có thể ghi: ./tmp và ./log (dưới gốc ứng dụng của bạn). Nếu bạn muốn tạm thời thả tệp trong thời gian yêu cầu, bạn có thể ghi vào tên tệp như # {RAILS_ROOT}/tmp/myfile _ # {Process.pid}. Không có gì đảm bảo rằng tệp này sẽ có trên các yêu cầu tiếp theo (mặc dù nó có thể), vì vậy không nên sử dụng tệp này cho bất kỳ loại bộ nhớ vĩnh viễn nào.
Bạn sẽ có thể khá dễ dàng ghi các file xml tạo của bạn để tmp/
và theo dõi các tên, tải về và ghi các tập tin s3 để cùng thư mục, và (có thể?) Gọi một lệnh zip chừng đầu ra nằm trong tmp/
, sau đó phân phối tệp tới trình duyệt có loại mime chính xác để nhắc tải xuống. Tôi sẽ chỉ quan tâm đến kích thước của tập tin lớn và nếu heroku có giới hạn không có giấy tờ về những gì họ sẽ cho phép trong thư mục tmp. Đặc biệt là vì bạn chỉ thực hiện hành động này để tải xuống một lần trong thời gian yêu cầu duy nhất, tôi nghĩ bạn có cơ hội tốt để có thể thực hiện.
Chỉnh sửa: Nhìn xung quanh một chút, bạn có thể có thể sử dụng một cái gì đó như RubyZip để tạo tệp zip nếu bạn muốn tránh gọi lệnh hệ thống.
Nguồn
2010-10-28 19:37:54
Được rồi Brett, điều này nghe giống như người chiến thắng. Trước hết, tôi nghĩ chúng tôi chỉ cần zip trong thời gian yêu cầu. Nếu nó cần thiết nữa, chúng ta có thể shimmy nó theo s3 ... Vâng, điều này nghe có vẻ khả thi. Chúc mừng! – digitalWestie
rubyzip có sự cố khi tạo tệp zip tương thích với Windows. rubyzip2 có cùng vấn đề và đá quý zip cũng vậy. –