2016-04-30 3 views
0

У меня есть задание в моем рельсах приложение, которое простирается от ActiveJob :: Base, и есть два пути, что называется:Есть ли способ определить, выполняется ли ActiveJob на рабочем столе Resque или в приложении?

  1. ResqueScheduler на ежедневной основе, где подобран работником Resque и обрабатывается
  2. В приложении через вызов #perform_now, поэтому он обрабатывается приложением.

Есть ли способ определить в рамках работы, обрабатывается ли он работником-спасателем?

ответ

0

В вашем журнале сервера вы должны увидеть ссылку на ActiveJob.

[ActiveJob] [<YOUR-JOB-CLASS>] [b8ed2ecb-10ce-433d-8ddb-33a04c8021cd] Performing <YOUR-JOB-CLASS> from Resque(default)... 

Это не окончательный, но это сильный индикатор в контексте вашего кода.

+0

Я пытаюсь выяснить во время выполнения кода - я записываю определенную информацию, если задание выполняется в фоновом режиме, но не при вызове #perform_now. – mosquito242

+0

Лучшее решение, которое я нашел до сих пор, в основном переопределяет метод perform_now для добавления переменной в аргументы, но я надеялся, что есть лучший способ. – mosquito242

0

Вы можете использовать defined?(Rails), чтобы определить, находитесь ли вы в приложении Rails или находитесь в контексте Resque.

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