未找到Sidekiq延迟方法

时间:2013-12-11 01:50:06

标签: ruby-on-rails ruby sidekiq

我正在将Sidekiq添加到我的Rails 4应用程序中(没有对perform_async做任何事情),当我delay一个工作时,在我的情况下邮寄一些东西,Rails抱怨没有命名的方法delay。这就是我所说的:

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

我添加了gem并看到bundle install列出了gem(使用sidekiq 2.11.0),我正在本地开发并在本地运行bundle exec sidekiq和Redis服务器127.0.0.1 :6379(默认端口6379)。

为什么找不到Sidekiq的方法定义?一个奇怪的事情是RubyMine可以跳转到定义,但是当我运行Rails时,它会给出找不到delay的错误。我在Sidekiq的定义中看到,它应该将delay扩展到每个类。

2 个答案:

答案 0 :(得分:1)

尝试在控制台中运行gem "sidekiq"。如果它返回true,请尝试运行此代码段:

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

你应该从Redis那里得到一些输出。

如果第一个命令失败,则表示您sidekiq未正确包含Gemfile。如果第二个命令失败,那么你在MyMailer类中做了一些奇怪的事情。

请记住,如果您在development环境中运行Rails控制台(如果您不知道,可能是,但您可以查看Rails.env),则需要{ {1}}可以访问development

中的gem

答案 1 :(得分:0)

只是有类似的东西...但是是由Sidekiq更新触发的。

https://github.com/mperham/sidekiq/wiki/Delayed-extensions说,

  

在Sidekiq 5+中默认禁用它们。采用   Sidekiq :: Extensions.enable_delay!打开它们。

添加Sidekiq :: Extensions.enable_delay!到初始化程序