2015-09-02 87 views
1

我有一個腳本,每週運行一次並創建一個CSV文件。下載鏈接通過電子郵件發送出去,以便用戶可以下載文件。我目前在/tmp/存儲該文件。這有時有效,但有些用戶得到一個錯誤和日誌顯示存儲文件的最佳位置

ActionController::MissingFile occurred in csv_downloads#download: 
Cannot read file tmp/filename.csv 

什麼是更好的方式來存儲這些文件?這是當前腳本

csv_string = CSV.generate(write_headers: true, headers: HEADER) { |csv| write_data(csv) } 
    file = File.new(File.join(Dir.pwd, "/tmp/#{@file_name}.csv"), "w+") 
    file.write(csv_string) 
    file.close 
    file 
+0

一個問題是,它看起來像是保存到'/ tmp',然後嘗試訪問'tmp'(沒有/),這將是<<您的rails應用程序的路徑>/tmp' –

+0

@MaxWilliams我認爲這可能是最初的,但它適用於某些用戶,它在測試中起作用。我認爲在用戶可以訪問該文件之前,tmp/getting被清除了一個問題。 –

回答

3

如果文件是公開的,爲什麼不將它們存儲在"#{Rails.root}/public/csv-files/#{@file_name}.csv"的一部分。如果public不是一個選項,那麼將它們放在一個安全的地方。不在/tmp,它們可以被系統刪除。

/tmp dir由系統定期清理。閱讀此討論瞭解更多信息https://askubuntu.com/questions/20783/how-is-the-tmp-directory-cleaned-up

+0

我的控制器限制哪些用戶可以訪問該文件。最好是創建一個/ downloads目錄並將文件放在那裏?我也問過這個問題,以更好地瞭解tmp/works的用法。什麼是清除這個文件夾?何時清除?當我在那裏放置什麼東西時,我可以期待它呆多久? –