2013-06-10 8 views
0

У меня есть папка в каталоге public моего проекта Rails. Иногда сервер загружает файлы в эту папку. Я бы хотел, чтобы сервер очищал эту папку (удалять все файлы) каждый час. Можно ли это сделать в Rails?Rails очистка папки каждый час

ответ

0

Напишите вкладку CRON и выполните ее каждый час. Что-то вроде

0 * * * * find /path/to/rails/public -name "*.txt" -mtime +1 | xargs rm -fr 

Конечно, заменить *.txt с шаблоном, который соответствует вашим файлам.

Редактировать: @JoeFrambach имеет проблему с трубопроводом find до xargs, но он не уточняет ПОЧЕМУ или предлагает альтернативное решение. Если вы не хотите использовать трубу вы можете использовать переключатель -exec с find:

find /path/to/rails/public -name "*.txt" -mtime +1 -exec rm {} \;

которые в конечном счете должны быть одинаковыми.

+0

Спасибо, Коди. Мне интересно, почему требуется «-mtime + 1» (означает ли это поиск всех файлов, измененных за последние 24 часа?) Кроме того, должно ли оно быть '-name' вместо' --name'? –

+0

http://linuxcommando.blogspot.com/2007/10/find-xargs-pipe.html –

+0

@JoeFrambach Ваша связанная статья все еще говорит, почему НЕ. Я не могу реплицировать проблему 'rm: missing operand' в OS X или Linux - статья с 2007 года - с тех пор была обновлена? –

0

Не в рельсах напрямую, но, конечно, с небольшим рубином. Вы можете настроить периодические задания, написав задачу cron (или использовать всякий раз, когда драгоценный камень хранит его в рубине, если вам не нравится cron).

Вы можете использовать каждый раз, когда выполняете команды оболочки напрямую или вместо этого записываете задачу рейка и выполняете ее.

Смежные вопросы