Как запустить задание resque в консоли?

Я пытаюсь вызвать задание в консоли, но всегда получаю ошибки.

Следовал следующей документации:

Создал следующий файл: (lib/jobs/archive_survey_jobs.rb)

module Jobs
  class ArchiveSurveysJob < ActiveJob::Base
    @queue = :setup

    def perform(survey_type)
      if SurveyTypes.all_classes.map(&:to_s).include?(survey_type)

        surveys = Survey.where(something: 'stuff')\
                        .where.not(something: 'stuff',
                                   something: 'stuff')

        surveys.each do |survey|
          do_something
        end
      end
    end
  end
end

Я понимаю, что могу сделать что-то вроде Resque.enqueue(ArchiveSurveysJob, 'string_here')

Как я могу вызвать это в консоли? Если я попытаюсь: Jobs::ArchiveSurveysJob.create(survey_type: 'string_here'), когда я проверю статусы Resque, это приведет к ошибке: «Задача не удалась из-за ошибки:

неопределенная локальная переменная или метод `args' for #

Если я попробую это:

Jobs::ArchiveSurveysJob.perform(`string_here`)

Or:

Jobs::ArchiveSurveysJob.perform_now('string_here')

Я получил:

ArgumentError: неправильное количество аргументов (указано 0, ожидается 1..2)

Пожалуйста, дайте мне знать, если мне не хватает документации или я делаю что-то не так.


person Joao Quaresma    schedule 10.03.2019    source источник
comment
Почему вы поместили класс в модуль? Вы пытались запустить perform_nowс классом вне модуля?   -  person Graham Slick    schedule 10.03.2019
comment
@GrahamSlick Если я удалю его из модуля и запущу: ArchiveSurveysJob.perform_now(string_here')`, я скажу: uninitialized constant ArchiveSurveysJob   -  person Joao Quaresma    schedule 10.03.2019
comment
Jobs::ArchiveSurveysJob.perform_now('string_here') должно было сработать.   -  person Sergio Tulentsev    schedule 11.03.2019


Ответы (1)


Как мне удалось это сделать, так это создать задачу Rake и вызвать там задание.

person Joao Quaresma    schedule 11.03.2019