开发者

Rails - Creating temp files in a portable way

开发者 https://www.devze.com 2022-12-18 04:52 出处:网络
My rails application runs on a Ubuntu server machine. I need to create temporary files in order to \"feed\" them to a second, independent app (I\'ll be using rake tasks for this, in case this informa

My rails application runs on a Ubuntu server machine.

I need to create temporary files in order to "feed" them to a second, independent app (I'll be using rake tasks for this, in case this information is needed)

My question is: what is the best way of creating temporary fields on a rails application?

Since I'm in ubuntu, I could create them on /tmp/whatever, but what would work only in linux开发者_运维百科.

I'd like my application to be as portable as possible - so it can be installed on Windows machines & mac, if needed.

Any ideas?

Thanks a lot.


tmp/ is definitively the right place to put the files.

The best way I've found of creating files on that folder is using ruby's tempfile library.

The code looks like this:

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

I like this solution because:

  • It generates random file names automatically (you can provide a prefix)
  • It automatically deletes the files when they are no longer used. For example, if invoked on a rake task, the files are removed when the rake task ends.


Rails apps also have their own tmp/ directory. I guess that one is always available and thus a good candidate to use and keep your application portable.

0

精彩评论

暂无评论...
验证码 换一张
取 消