我从resque转换为sidekiq gem for ruby on rails app,以减少内存使用和更快的响应时间。
问题:
错误:
2012-07-12T13:26:19Z 64455 TID-ousyenaqg WARN: undefined method `perform' for #<BookInit:0x007f8c6f73f520>
必须有更精确的错误!
答案 0 :(得分:4)
尝试更改
def self.perform(params...)
到
def perform(params...)
答案 1 :(得分:2)
将下一个代码添加到rake任务中,然后像调用resque
一样调试它require 'sidekiq'
require 'sidekiq/cli'
desc 'Runs Sidekiq as a rake task'
task :debug_sidekiq => :environment do
begin
cli = Sidekiq::CLI.instance
cli.parse
cli.run
rescue => e
raise e if $DEBUG
STDERR.puts e.message
STDERR.puts e.backtrace.join("\n")
exit 1
end
end
代码取自sidekiq / bin / sidekiq
答案 2 :(得分:1)
使用Pry调试Sidekiq:
通常,Sidekiq服务器在执行语句时不会启动Pry。
您可以使用Sidekiq inline infrastructure通过pry调试Sidekiq:
Sidekiq内联基础架构会覆盖perform_async及其 实际上调用执行而不是 perform_async 。这允许工作人员以内联方式运行 测试环境。
您需要在代码中添加以下内容:
require 'sidekiq'
require 'sidekiq/testing/inline'
现在Pry将能够调用perform方法。
注意:如果您必须在线程环境中运行作业来测试并发性或性能,这将无济于事。