26

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

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

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

由于我在 ubuntu 中,我可以在 上创建它们/tmp/whatever,但仅适用于 linux。

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

有任何想法吗?

非常感谢。

4

2 回答 2

41

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

我发现在该文件夹上创建文件的最佳方法是使用ruby​​ 的 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 任务结束时删除文件。
于 2010-01-27T12:33:04.277 回答
7

Rails 应用程序也有自己的tmp/目录。我猜想它总是可用的,因此是使用和保持应用程序可移植性的好人选。

于 2010-01-25T09:47:10.620 回答