2013-12-11 3 views
0

Я добавляю Sidekiq в свое приложение Rails 4 (ничего не делая с perform_async), а когда я delay задание, в моем случае что-то пересылаю, Rails жалуется, что нет метода с именем delay. Это то, что я называю:Метод Sidekiq delay не найден

MyMailer.delay.signup_notification(@user.id, @user.email)

Я добавил камень и увидел, что bundle install перечисленных камень (с помощью sidekiq 2.11.0), я разрабатываю на месте и работает bundle exec sidekiq вместе с Redis сервер локально на 127.0.0.1:6379 (порт по умолчанию 6379).

Почему определение метода Sidekiq не найдено? Странно, что RubyMine может перейти к определению, но когда я запускаю Rails, он дает ошибку, что delay не найден. Я вижу в определении Sidekiq, что он должен распространять delay на каждый класс.

+0

Включен ли он в определенную группу драгоценных камней, которая, возможно, не включена в среду, в которой вы пытаетесь ее использовать? –

+0

Я использую механизм Rails, который использует sidekiq. Двигатель включает sidekiq во всех средах. Оказывается, мне нужно было включить sidekiq в мое приложение, а также в движок (я нахожу это странным). – Jack

ответ

1

Попробуйте запустить gem "sidekiq" в консоли. Если он возвращает значение true, попробуйте выполнить этот фрагмент:

class TestMailer < ActionMailer::Base; def x; end; end; TestMailer.delay 

Вы должны получить какой-то результат от Redis.

Если первая команда не удалась, вы не включаете sidekiq в свой Gemfile. Если вторая команда не работает, вы делаете что-то странное в своем классе MyMailer.

Помните, что если вы используете Rails консоли в development среде (если вы не знаете, вы, наверное, есть, но вы можете проверить с Rails.env), вы должны позволить development иметь доступ к драгоценным камнем в Gemfile.

+0

Я использую Rails-движок, в котором используется sidekiq. Двигатель включал sidekiq в свой gemfile, поэтому я предположил, что если бы включил двигатель, он также включил бы sidekiq. Это не так. Я исправил это, добавив sidekiq к моему приложению в дополнение к тому, что он уже находится в двигателе. Спасибо, что помогли отладить! – Jack

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