2012-02-19 30 views
5

Tôi có một số tệp mẫu tôi muốn sử dụng trong ứng dụng đường ray của mình. Tôi đã tự hỏi nơi (theo đó thư mục) để đặt chúng cho hai kịch bản:Nơi đặt tài liệu riêng tư để sử dụng trong các ứng dụng Rails?

  1. Họ là những cá nhân để ứng dụng của tôi (Chỉ dành cho webmaster có thể xóa, thay đổi chúng)
  2. Họ là những cá nhân để ứng dụng của tôi, nhưng họ cũng có thể được quản lý bởi quản trị viên (xóa, sửa đổi)
+0

Bạn có cần phần 1) tệp được sử dụng trong nội dung đầu ra không? – KobeJohn

Trả lời

7

cập nhật sau khi bình luận

Vì bạn muốn để phục vụ các tập tin địa phương, chỉ cần đặt chúng bên ngoài/public/folder và bên ngoài của bất kỳ/tài sản/thư mục và bạn nên được tốt. Bạn có thể đọc thêm về cộng đồng và tài sản thư mục ở đây: Section 2 How to use the Asset Pipeline Hãy nói rằng:

/private/ 

Tôi tin Section 11 send_file cũng được sử dụng trong vì vậy câu hỏi được liên kết trong câu trả lời ban đầu của tôi dưới đây vẫn là cách để bạn có thể cung cấp quyền truy cập vào tệp thông qua bộ điều khiển thay vì tĩnh. Chuyển thể từ các tài liệu:

send_file("#{Rails.root}/private/#{filename}", 
      :filename => "#{filename}", 
      :type => "application/pdf", #for example if pdf 
      :disposition => 'inline') #send inline instead of attachment 

câu trả lời gốc phục vụ từ xa cùng với send_file dưới đây

Về 1) tập tin riêng cho các ứng dụng Bạn có thể khóa các tập tin cá nhân trong một hệ thống như Amazon S3 cung cấp quyền truy cập được ủy quyền như Callmeed giải thích trong this SO question. Sau đó, chỉ ứng dụng của bạn mới có thể cho phép truy cập vào một tệp.

Về 2) cũng tiếp cận được các quản trị viên

Vấn đề với chỉ sử dụng một phần 1) là nó mở ra các file trong một khoảng thời gian hạn chế trong thời gian đó tôi cho rằng họ là công bố rộng rãi. Vì vậy, nếu bạn muốn nhận được xung quanh đó, tôi nghĩ rằng bạn cần phải thực hiện các giải pháp từ Pavel Shved thực sự trong cùng một câu hỏi SO ở trên.

Trong giải pháp đó, tệp được cung cấp qua tuyến đường/bộ điều khiển cung cấp dữ liệu nhị phân của tệp thay vì sử dụng URL trỏ đến tệp.

giải pháp kết hợp

Đọc tập tin từ S3 chỉ với ứng dụng của bạn được phép làm việc tiếp cận này (không mở nó công khai). Sau đó cung cấp dữ liệu trực tiếp thông qua bộ điều khiển có thể cho phép bất cứ ai bạn muốn.

Hãy cẩn thận

  • Cung cấp dữ liệu nhị phân trực tiếp từ bộ điều khiển có vẻ như nó sẽ giết hiệu suất của các ứng dụng nếu nó được sử dụng thường xuyên, nhưng tôi chưa bao giờ thử nó.
  • Nếu bạn có thể tìm cách đơn giản hơn để thực hiện phần 1), phần 2) sẽ vẫn làm việc với giải pháp
+0

cảm ơn phản hồi nhanh. Câu hỏi của tôi là về một thư mục địa phương không phải là một nơi bên ngoài. –

+1

Tôi đã cập nhật câu trả lời cho các tệp cục bộ. Có phải đó là những gì bạn cần? – KobeJohn

+0

Tài sản đường ống là cơ chế (Sprockets) được Rails sử dụng để quản lý tài sản (hình ảnh, tệp javascript và tệp định kiểu), câu hỏi của tôi đơn giản hơn, là xử lý tệp mẫu riêng tư (tài liệu) bên trong ứng dụng. Ý tôi là, nơi đặt chúng đúng cách, đâu là nơi tốt nhất để định vị chúng bên trong cấu trúc thư mục đường ray? –

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