Можно ли запустить задачу rake через интерфейс rails? - PullRequest
1 голос
/ 13 декабря 2010

Или я думаю об этом неправильно? По сути, я хочу иметь возможность загружать zip-файл в модель, а после загрузки хочу запустить на нем кучу процессов. Было бы неплохо иметь возможность делать это с бэкэнда / консоли, а также иметь возможность запуска действий через интерфейс рельсов.

Идея здесь:

Галерея содержит collection.zip

В галерее много детей: item

collection.zip содержит информацию для каждого элемента

Я хочу запустить пакетный процесс gallery.items.build, который будет извлекать информацию из zip-файла и использовать ее для создания новых элементов. Я думал об использовании Paperclip :: Processor для этой задачи, но мне еще предстоит найти много действительно полезной или исчерпывающей документации о том, как это будет работать, и эксперименты только привели к разочарованию и путанице. Я видел, как некоторые люди используют грабли для такого рода вещей, но я действительно не хочу использовать консоль для выполнения задачи, и очень хотел бы иметь кнопку с надписью «Создать галерею», которая будет запускаться все необходимые задачи.

Итак, есть ли способ сделать это? Будет ли это считаться плохой практикой? Если так, есть ли другой способ, которым я должен подходить к этой проблеме?

Ответы [ 3 ]

4 голосов
/ 14 декабря 2010

Если вы хотите узнать, как запустить задание рейка с рельсов, у Райана Бейтса есть отличный бесплатный скринкаст, который покажет вам, как.

http://railscasts.com/episodes/127-rake-in-background

4 голосов
/ 14 декабря 2010

delayed_job или resque считаются лучшими практиками для фоновой обработки, а не для выполнения задачи rake.

Центральная идея обоих:

  1. Пакетные сценарии или код, которые необходимо запустить в фоновом режиме, хранятся в lib.
  2. Задания сериализуются и сохраняются в БД (или любом поддерживаемом слое или очереди, например, Redis или Starling) в течение цикла запроса.
  3. Демон, который работает в фоновом режиме, будет искать задания в очереди и обрабатывать их в различных порядках (скажем, в приоритетном порядке или в пятерке и т. Д.)
2 голосов
/ 13 декабря 2010

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

...