Как развернуть процесс JRuby Resque как файл войны? - PullRequest
0 голосов
/ 30 января 2012

У меня есть приложение JRuby / Rails, которое развернуто в виде файла WAR и запущено на сервере приложений Tomcat.Я хотел бы использовать delayed_job или Resque в качестве инструмента для выполнения длительных заданий, которые пролистывают базу данных через те же подклассы ActiveRecord, которые используются моим Rails-приложением.И я хочу, чтобы он запускался в другом процессе или потоке, чтобы моя веб-сторона приложения не работала медленно.

Инструкции по включению и использованию delayed_job или Resque довольно понятны.Например, как только я сделал все jiggery-pokery, чтобы использовать Resque, я просто должен сделать:

QUEUE=* jruby -J-cp /path/to/library -S rake environment resque:work

Но это работает только из командной строки.Как мне получить его, чтобы мой процесс Resque мог запускаться путем развертывания файла WAR в Tomcat?Если это так, это один и тот же файл WAR с другой конфигурацией или другой файл WAR?Если это другой WAR-файл, как его сгенерировать?Нужен ли второй Tomcat для процесса Resque / DJ?Есть ли способ поместить процесс Resque / DJ в его собственный поток JRuby / JVM?Есть ли какие-то настройки jiggery-pokery, которые я должен сделать, чтобы это заработало?

1 Ответ

0 голосов
/ 31 января 2012

JRuby распознает команды оболочки, чьи ARGV[0] =~ /ruby$/, и запускает их в процессе, так что вы можете использовать это в своих интересах. Предполагая, что вы включили ваш Rakefile в файл war, вы можете запустить поток и запустить Resque в нем с помощью аналогичной команды из инициализатора приложения. Если вы используете Bundler, для него уже будет настроена среда, и его следует передать находящемуся в процессе дочернему процессу JRuby.

...