Rails - 以便携方式创建临时文件

时间:2010-01-25 09:45:29

标签: ruby-on-rails ubuntu temporary-files

我的rails应用程序在Ubuntu服务器上运行。

我需要创建临时文件,以便将它们“提供”给第二个独立的应用程序(如果需要此信息,我将使用rake任务)

我的问题是:在rails应用程序上创建临时字段的最佳方法是什么?

因为我在ubuntu,我可以在/tmp/whatever创建它们,但是只能在linux中使用它。

我希望我的应用程序尽可能便携 - 因此它可以安装在Windows机器上。 mac,如果需要的话。

有什么想法吗?

非常感谢。

2 个答案:

答案 0 :(得分: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任务结束时将删除这些文件。

答案 1 :(得分:7)

Rails应用程序也有自己的tmp/目录。我想这个版本总是可用的,因此是一个很好的候选者,可以让你的应用程序可以移植。