Rails — переносимое создание временных файлов

Мое приложение rails работает на сервере Ubuntu.

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

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

Так как я в убунте, то мог бы создать их и на /tmp/whatever, но что бы работало только в линуксе.

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

Любые идеи?

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


person kikito    schedule 25.01.2010    source источник


Ответы (2)


tmp/ определенно правильное место для размещения файлов.

Я нашел лучший способ создания файлов в этой папке с помощью ruby's 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 завершается.
person kikito    schedule 27.01.2010
comment
Круто, какая полезная абстракция. - person elsurudo; 04.06.2013
comment
file.path для ссылки на файл tmp, если вы его ищете! - person Mithun Satheesh; 26.02.2015

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

person Veger    schedule 25.01.2010