Rails - 如何以可移植的方式创建临时文件

27

我的Rails应用运行在Ubuntu服务器机器上。

我需要创建临时文件以便将它们“提供”给另一个独立的应用程序(我将使用rake任务来完成这个过程,如果需要这些信息)。

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

由于我在ubuntu操作系统中,我可以在/tmp/whatever中创建它们,但这只适用于Linux。

我希望我的应用程序尽可能具有可移植性——因此,如果需要,它可以安装在Windows和Mac上。

有什么建议吗?

非常感谢。

2个回答

42

tmp/ 绝对是放置文件的正确位置。

我找到的在该文件夹上创建文件的最佳方法是使用 Ruby 的 tempfile 库

代码如下:

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任务结束时,文件将被删除。

太酷了,这是一个非常有用的抽象。 - elsurudo
1
如果你正在寻找临时文件,可以使用file.path来引用它! - Mithun Satheesh

7
Rails应用程序也有自己的tmp/目录。我猜这个目录始终可用,因此是一个很好的选择,可以使用并保持你的应用程序可移植性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接