Подтвердить что ты не робот

Неинициализированная константа Delayed:: Job

Я добавил gmail файл delayed_job в свой gemfile и установил его правильно, но когда я пытаюсь запустить следующую строку:

Delayed::Job.enqueue do_it(), 0, 1.minutes.from_now.getutc

Я получаю ошибку 'uninitialized constant Delayed:: Job'

Может кто-нибудь объяснить, что мне нужно сделать здесь? Я попытался запустить "rake jobs: work" заранее, но он также возвращает ошибку "uninitialized constant Delayed:: Job". Кроме того, я добавил "require" delayed_job '"в файл (application.rb) без большой удачи.

4b9b3361

Ответ 1

Вы выполнили инструкции по установке в файле README? https://github.com/collectiveidea/delayed_job

Добавьте это в свой gemfile:

gem 'delayed_job_active_record'

а затем запустите это на консоли:

$ rails generate delayed_job:active_record
$ rake db:migrate

Вам нужно создать таблицу замедленных заданий в базе данных (это предполагает, что вы используете активную запись).

Для Rails 3 все, что вам нужно сделать, это включить его в gemfile, запустить этот код выше, чтобы создать таблицу и перенести базу данных, а затем перезагрузить сервер и перейти!

Ответ 2

Если вы обновили версию delayed_job >= 3, вам нужно добавить это (предположим, что вы используете ActiveRecord):

# Gemfile
gem 'delayed_job_active_record'

Ответ 3

Я использую задержанную работу внутри движка (так что камень указан в .gemspec, а не в Gemfile) и получает ту же ошибку. Я обнаружил, что могу решить проблему, используя:

require 'delayed_job_active_record'  # fixes problem

а не

require 'delayed_job'                # doesn't

Ответ 5

Я снова сопротивлялся той же проблемой. Я следил за ryan bates screencast на delayed_job и получил ту же ошибку "uninitialized constant Delayed:: Job". В screencast ryan создается файл с именем mailing_job.rb(расположенный под папкой lib) с методом delayed_job внутри, что позволяет использовать метод enqueue. После некоторого исследования я обнаружил, что рельсы 3 не загружают файлы папок lib в ваше приложение (не совсем уверены)

Попробуйте это
В вашем контроллере, где вы используете это:

"Delayed::Job.enqueue do_it(), 0, 1.minutes.from_now.getutc" 

Попробуйте потребовать файл, подобный этому.

require 'mailing_job'
class AssetsController < ApplicationController
    def some_method
        Delayed::Job.enqueue do_it(), 0, 1.minutes.from_now.getutc
    end
end

Ответ 6

Возможность изменения версии: если вы переходите с версии 2.1.x к версии 3.x с помощью не заблокированного пучка, у вас может быть аналогичная проблема.