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

kik*_*ito 24 ubuntu ruby-on-rails temporary-files

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

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

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

因为我在ubuntu,我可以创建它们/tmp/whatever,但什么只能在linux中工作.

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

有任何想法吗?

非常感谢.

kik*_*ito 38

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

我发现在该文件夹上创建文件的最佳方法是使用ruby的临时文件库.

代码如下所示:

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
Run Code Online (Sandbox Code Playgroud)

我喜欢这个解决方案因为:

  • 它会自动生成随机文件名(您可以提供前缀)
  • 它们在不再使用时会自动删除它们.例如,如果在rake任务上调用,则在rake任务结束时将删除这些文件.


Veg*_*ger 7

Rails应用程序也有自己的tmp/目录.我想这一个总是可用的,因此是一个很好的候选者,可以使用并保持你的应用程序可移植.