【问题标题】:Sidekiq: NoMethodError: undefined method `perform'Sidekiq:NoMethodError:未定义的方法“执行”
【发布时间】:2014-09-11 08:48:15
【问题描述】:

这是我想要做的:

2.1.2 :001 > UpdateStyleRanks.perform_async

这是错误:

NoMethodError: undefined method `perform' for #<UpdateStyleRanks:0x00000002f5e388>

这是我的工人:

# app/workers/update_style_ranks.rb
class UpdateStyleRanks
  include Sidekiq::Worker

  def perform
  end
end

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 redis sidekiq


    【解决方案1】:

    在当前版本的 sidekiq(4 和 5)中,我认为解决方案是调用 perform_async 而不是执行。

    【讨论】:

      【解决方案2】:

      如何重新启动在后台运行的 heroku dyno?

      heroku run:detached bundle exec sidekiq -e production

      以下命令会强制 sidekiq 选择新课程吗?

      heroku ps:stop run

      heroku run:detached bundle exec sidekiq -e production

      【讨论】:

        【解决方案3】:

        对工作人员没有命名要求。你可以这样做:

        class Foo
          include Sidekiq::Worker
          def perform; end
        end
        

        我怀疑你只需要重新启动 Rails/Spring/Zeus 来学习新课程。

        【讨论】:

          【解决方案4】:

          您应该将文件重命名为 update_style_rank_worker.rb
          以及 UpdateStyleRankWorker 的类名

          【讨论】:

          • 也许不能解决问题,但它是很好的编码风格,对吧?
          猜你喜欢
          • 2018-07-10
          • 2018-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-01
          • 2015-02-22
          • 2018-04-16
          相关资源
          最近更新 更多