Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Sidekiq worker未定义的局部变量或方法_Ruby On Rails 4_Redis_Sidekiq - Fatal编程技术网

Ruby on rails 4 Sidekiq worker未定义的局部变量或方法

Ruby on rails 4 Sidekiq worker未定义的局部变量或方法,ruby-on-rails-4,redis,sidekiq,Ruby On Rails 4,Redis,Sidekiq,我试图在我的应用程序中使用Sidekiq,但由于某种原因,我得到了一个未定义的局部变量或方法“worker”,用于# 我已经为sidekiq web UI安装了sidekiq、sinatra和slim,它没有注册任何东西。我现在在另一个终端窗口运行sidekiq 工人电话: worker.perform_async(@user) 我的工人: # app/workers/worker.rb class worker include Sidekiq::Worker sid

我试图在我的应用程序中使用Sidekiq,但由于某种原因,我得到了一个
未定义的局部变量或方法“worker”,用于#

我已经为sidekiq web UI安装了sidekiq、sinatra和slim,它没有注册任何东西。我现在在另一个终端窗口运行sidekiq

工人电话:

worker.perform_async(@user)
我的工人:

# app/workers/worker.rb

    class worker
    include Sidekiq::Worker
    sidekiq_options retry: false

    def perform(s_user)

        user = $client.user_timeline(s_user, exclude_replies: 1,include_rts: 1 ).take(10)
        user.each do |t|
        array_list   = $client.retweeters_of(t.id)
        end
        limited_list = array_list

        array = []
        hash  = {}

        limited_list.each do |g|

            hash = {:key => g.followers_count, :value => g.profile_image_url.to_s}
            array.push(hash)

        end

        array.sort_by! {|h| h[:key]}
        array.reverse!
        final = array.take(10)


    $redis.set("#{hash[:value]}", "#{hash[:value]}")
    end
end

谢谢

我推荐一个更具描述性的名称,并带有适当的大小写。尝试将类重命名为
MyWorker
,将文件重命名为
my\u-worker.rb
,并调用
MyWorker.perform\u async(@user)

我认为这是可行的,因为我不再有那个错误了。但是,它现在在页面的相应视图中显示了一些未定义的局部变量方法。我现在如何访问worker内部的变量?能否提供有关您现在看到的内容的更多信息?未定义的局部变量是由于active record类方法支持异步调用,但实例方法不支持。例如,user=user.find 1如果在worker中运行user.do_something,它会说complain,因为实例方法不支持异步,除非执行user.delay.do_something引用: