未找到Sidekiq延迟方法

问题描述 投票:0回答:2

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

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

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

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

ruby-on-rails ruby sidekiq
2个回答
1
投票

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

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

您应该从Redis获得一些输出。

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

请记住,如果你在development环境中运行Rails控制台(如果你不知道,你可能会,但你可以查看Rails.env)你需要让development访问Gemfile中的gem。


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.