Rails - создание временных файлов в переносном режиме
Приложение "Мои рельсы" запускается на серверной машине Ubuntu.
Мне нужно создать временные файлы, чтобы "подать" их во второе независимое приложение (для этого я буду использовать задачи рейка, если эта информация понадобится)
Мой вопрос: какой лучший способ создания временных полей в приложении rails?
Поскольку я нахожусь в ubuntu, я мог бы создать их на /tmp/whatever
, но что бы работало только в Linux.
Я хочу, чтобы мое приложение было как можно более переносимым, поэтому оно может быть установлено на компьютерах Windows и Mac, если это необходимо.
Любые идеи?
Большое спасибо.
Ответы
Ответ 1
tmp/
окончательно подходит для размещения файлов.
Лучший способ найти файлы в этой папке - библиотека ruby 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 заканчивается.
Ответ 2
У приложений Rails также есть свой собственный каталог tmp/
. Я предполагаю, что он всегда доступен и, следовательно, хороший кандидат для использования и сохранения вашего приложения.