Rails - Создание временных файлов переносимым способом - PullRequest
22 голосов
/ 25 января 2010

Мое приложение rails запускается на сервере с Ubuntu.

Мне нужно создать временные файлы, чтобы «подать» их во второе, независимое приложение (для этого я буду использовать задачи rake, если эта информация потребуется)

Мой вопрос: каков наилучший способ создания временных полей в приложении rails?

Поскольку я нахожусь в Ubuntu, я могу создать их на /tmp/whatever, но это будет работать только в Linux.

Я бы хотел, чтобы мое приложение было максимально переносимым, чтобы при необходимости его можно было установить на компьютеры Windows и Mac.

Есть идеи?

Большое спасибо.

Ответы [ 2 ]

36 голосов
/ 27 января 2010

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

Мне нравится это решение, потому что:

  • Автоматически генерирует случайные имена файлов (вы можете указать префикс)
  • Он автоматически удаляет файлы, когда они больше не используются. Например, при вызове задачи rake файлы удаляются по окончании задачи rake.
7 голосов
/ 25 января 2010

Rails-приложения также имеют собственный каталог tmp/. Я думаю, что он всегда доступен и, таким образом, является хорошим кандидатом для использования и сохранения переносимости вашего приложения.

...