В настоящее время я пишу небольшую программу, которая просматривает каталог и добавляет видеофайлы в очередь преобразования. Я смог добиться этого (используя resque).
Но перед добавлением в очередь преобразования я хочу инициировать определенные действия на основе имени файла.
например:
- удалить (не добавлять в очередь) определенные файлы в соответствии с именем файла
- переименовывать файлы
- копировать определенные файлы
Поэтому я хочу запустить пару помощников, прежде чем произойдет добавление. Я хочу, чтобы они выполнялись в определенном порядке, и я хочу, чтобы было легко добавить других помощников.
То, как я об этом думал, тогда выглядело бы так:
Каждый помощник - это класс ruby с набором методов:
- run (выполняет помощник)
- new_name (возвращает новое имя файла, если оно изменилось)
- stop (предотвращает запуск следующих помощников и предотвращает добавление в
Очередь)
Все помощники должны храниться в одном каталоге и работать в алфавитном порядке (ext / 00_helper1.rb, ext / 01_helper2.rb ...).
псевдокод будет выглядеть так:
filename = <parameter>
stop = false
for each file in ext/*.rb
obj = asClass(file).new_instance(filename)
obj.run
if (obj.new_name) filename = obj.new_name
if (obj.stop)
stop = true
break
end
end
if not stop add_to_queue(filename)
Итак, мой вопрос:
Есть ли элегантный рубиновый способ?