Таким образом, вы можете писать в каталог tmp/
в корневом каталоге приложения, если вы не ожидаете, что он будет там при следующем запросе. Таким образом, вы должны сделать все за один цикл запроса (или одну отложенную работу).
Вот что вам нужно сделать. Запустите любой скрипт для генерации вашего файла и запишите его в tmp/
. Затем используйте что-то вроде Paperclip с бэкэндом S3, чтобы сохранить файл на S3. Убедитесь, что вы используете хранилище S3 (Paperclip использует FS по умолчанию); вместо того, чтобы сбрасывать записи в файловую систему, он использует гем AWS :: S3 для загрузки их в S3. Вы можете прочитать больше об этом в rdoc здесь: http://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/storage/s3.rb
Или вы всегда можете загрузить его на S3 самостоятельно, используя любой драгоценный камень или библиотеку, какую захотите.
Я использую этот метод в паре производственных веб-приложений. Вы не можете рассчитывать на то, что tmp / находясь там между запросами, но в пределах одного это надежно там.