2010-01-25 39 views
21

我的Rails應用程序在Ubuntu服務器機器上運行。Rails - 以便攜方式創建臨時文件

我需要以創建臨時文件,以「飼料」他們第二,獨立的應用程序(我將使用Rake任務對於這一點,如果需要此信息)

我的問題是:什麼是在rails應用程序上創建臨時字段的最佳方式?

因爲我在Ubuntu中,我可以在/tmp/whatever上創建它們,但是隻有在linux下才能使用它們。

我希望我的應用程序儘可能便攜,因此如果需要,它可以安裝在Windows機器& mac上。

任何想法?

非常感謝。

回答

36

tmp/確實是放置文件的正確位置。

我發現在該文件夾上創建文件的最佳方式是使用ruby's tempfile library

的代碼看起來是這樣的:

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 

我喜歡這樣的解決方案,因爲:

  • 它會自動生成隨機文件名(你可以提供前綴)
  • 它會自動刪除這些文件當他們不再使用時。例如,如果在rake任務上調用,則在rake任務結束時將刪除這些文件。
+7

'Rails.root.join('tmp')',而不是''#{Rails.root}/tmp「'。前者更清潔,(可能)更便攜。 – skalee 2011-11-09 22:49:37

+0

好點。修正了,謝謝! – kikito 2011-11-10 10:00:02

+0

酷,多麼有用的抽象。 – elsurudo 2013-06-04 19:37:17

7

Rails應用程序也有自己的tmp/目錄。我想那個總是可用的,因此是一個很好的候選人使用和保持你的應用程序的便攜性。