2010-01-25 28 views
21

Ứng dụng đường ray của tôi chạy trên máy chủ Ubuntu.Rails - Tạo các tệp tạm thời theo cách di động

tôi cần phải tạo tập tin tạm thời để "thức ăn" chúng vào một ứng dụng thứ hai, độc lập (Tôi sẽ sử dụng nhiệm vụ cào cho điều này, trong trường hợp thông tin này là cần thiết)

Câu hỏi của tôi là: những gì cách tốt nhất để tạo các trường tạm thời trên ứng dụng đường ray là gì?

Vì tôi đang ở ubuntu, tôi có thể tạo chúng trên /tmp/whatever, nhưng những gì sẽ chỉ hoạt động trong linux.

Tôi muốn ứng dụng của mình được di động nhất có thể - vì vậy ứng dụng có thể được cài đặt trên máy Windows & mac, nếu cần.

Bất kỳ ý tưởng nào?

Cảm ơn rất nhiều.

Trả lời

36

tmp/ chắc chắn là nơi thích hợp để đặt các tệp.

Cách tốt nhất tôi tìm thấy khi tạo tệp trên thư mục đó đang sử dụng ruby's tempfile library.

Mã này trông như thế này:

require 'tempfile' 

def foo() 
    # creates a temporary file in tmp/ 
    Tempfile.open('prefix', Rails.root.join('tmp')) do |f| 
    f.print('a temp message') 
    f.flush 
    #... do more stuff with f 
    end 
end 

Tôi thích giải pháp này vì:

  • Nó tạo các tên tập tin ngẫu nhiên tự động (bạn có thể cung cấp một tiền tố)
  • Nó tự động xóa các tập tin khi chúng không còn được sử dụng nữa. Ví dụ, nếu được gọi trên một công việc cào, các tập tin sẽ được gỡ bỏ khi tác vụ rake kết thúc.
+7

'Rails.root.join ('tmp')', không phải '" # {Rails.root}/tmp "'. Trước đây là sạch hơn và (có lẽ) di động hơn. – skalee

+0

Điểm tốt. Cố định, cảm ơn! – kikito

+0

Thật tuyệt, một khái niệm hữu ích. – elsurudo

7

Ứng dụng đường ray cũng có thư mục tmp/ riêng. Tôi đoán rằng một trong những luôn luôn có sẵn và do đó một ứng cử viên tốt để sử dụng và giữ cho ứng dụng của bạn di động.

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