Как я могу получить rails/ngnix для очистки файлов /tmp/RackMultipart*?

Когда пользователь загружает изображение, такие файлы создаются в /tmp

RackMultipart20101130-1130-1l2q8dt-0
RackMultipart20101130-1130-1t11oa9-0
RackMultipart20101130-1130-59nrpq-0
RackMultipart20101130-1130-6jdqem-0
RackMultipart20101130-11807-1usq3d8-0  
RackMultipart20101130-11807-nns7dw-0

Как я могу получить rails / nginx / passenger для очистки этих файлов после завершения загрузки?

Я использую:

  • nginx 0.8.53
  • Phusion Passenger 2.2.15 (mod_rails / mod_rack)
  • Ruby on Rails 2.3.8
  • Скрепка рубиновый камень для загрузки изображений

2 ответа

Решение

Первое, что приходит на ум, это задача Rake с crontab, чтобы очистить /tmp каталог время от времени.

  1. Создать новую задачу Rake в lib/tasks который удаляет RackMultipart* файлы.
  2. Выполняйте задание Rake в виде crontab каждые X часов.
  3. (необязательно) Используйте Whenever, чтобы упростить шаг 2 (достаточно мощный в сочетании с Capistrano)

При этом было бы лучше попросить Paperclip очистить файлы, так как описанный выше подход может удалить временный файл, все еще используемый Paperclip, но я не знаю, как это сделать.

Если вы не хотите писать задачу Rake, я бы предложил установить пакет tmpreaper для debian/ubuntu. Можно настроить для очистки /tmp так часто, как нужно (например, для удаления файлов, к которым не обращались в последний час).

Основная проблема Papeclip #902 была решена с выпуском Paperclip 3.1.0, после чего мы перестали видеть так много файлов RackMultipart*.

Другие вопросы по тегам