Ответ 1
Heroku использует то, что называется эфемерная файловая система. Это означает, что ваша локальная файловая система доступна только для одного динамика, и как только dyno остановлен, перезапущен или перемещен, все файлы в локальной файловой системе будут уничтожены.
Единственный способ для вашего процесса Delayed Job передать файлы внешнему процессу - хранить файлы в более постоянном месте. Это может быть S3, база данных, Rackspace Files и т.д., Но для Heroku это не может быть локальная файловая система.
Однако, если вы просто хотите сохранить файл во временном месте царапины, хорошо использовать локальную файловую систему. Похоже, что у вас могут быть проблемы, потому что каталог /app/tmp
может не существовать.
Попробуйте добавить это своему работнику:
Dir.mkdir(Rails.root.join('tmp'))
Или добавьте каталог tmp
в репозиторий git.
mkdir tmp
touch tmp/.keep
git add tmp/.keep
git commit -m "Add tmp directory to app repository."