Как запустить rake resque:work QUEUE=* при загрузке сервера Rails?

Я установил resque правильно, но для обработки всех очередей мне нужно запустить

rake resque:work QUEUE='*'

Проблема в том, что мне нужно держать окно терминала открытым, иначе resque:work не будет работать.

Знаете ли вы способ автоматического запуска этой команды rake каждый раз, когда я запускаю «rails server»?

Я на Localhost

lib/tasks/resque.rake

require 'resque/tasks'

task "resque:setup" => :environment do
    ENV['QUEUE'] = "*"
end

person sparkle    schedule 10.11.2012    source источник


Ответы (3)


Вместо вызова функции вызова вы можете использовать гем, такой как начальник, который может вызывать все остальные задачи. Это полезно, если вы хотите получить в значительной степени независимое от платформы решение, а также при развертывании в облаке. Ваш Procfile может иметь следующее содержимое:

web:    bundle exec thin start -p $PORT
worker: bundle exec rake resque:work QUEUE=*
clock:  bundle exec rake resque:scheduler

Источник: знакомство с бригадиром.

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

person Sumit Bisht    schedule 16.08.2013

Изменить: ответ от 2012 года! Кажется, это работает только для Rails 2!

Добавьте инициализатор в config/initializers примерно так:

Rake::Task["resque:work QUEUE='*'"].invoke

Не испытано!

person BvuRVKyUVlViVIc7    schedule 10.11.2012
comment
Я знаю, я просто указываю для пользователей, приземляющихся здесь. :) - person Pak; 12.06.2014

Лучший способ сделать это

ENV['QUEUE'] = "*"
Rake::Task["resque:work"].invoke
person emancu    schedule 08.08.2013