【问题标题】:Unable to call Rails Models inside Sidekiq worker class无法在 Sidekiq 工作人员类中调用 Rails 模型
【发布时间】:2017-05-28 13:25:24
【问题描述】:

我正在使用 sidekiq 调度程序 gem 在后台调度和运行任务。 设置工作正常,任务可以正确安排和执行,但是,如果我想从我的 rails 模型中运行方法,我不能。这就是我运行 sidekiq 的方式:

sidekiq -r ./app/workers/get_new_users.rb -e production

如何让我的 get_new_users 脚本调用模型中的方法?

require 'sidekiq-scheduler'


class GetNewUsers
  include Sidekiq::Worker


  def perform
    puts User.find(1)
  end
end

谢谢

【问题讨论】:

  • “从我的模型内部运行方法”到底是什么意思?如果您将模型的实例 id 传递给您的工作人员,您应该能够实例化您的 rmodel,例如:User.find(id) 并在其上调用方法。
  • 这是一个错字,我的意思是调用而不是运行 :) 当我调用 User.find(id) 时,我收到此错误:NameError: uninitialized constant GetNewUsers::User
  • 可以给工人看一下代码吗
  • 添加到主要问题中。

标签: ruby-on-rails ruby sidekiq


【解决方案1】:

只需删除-r 参数,sidekiq 就会加载您的 rails 环境(阅读:所有模型和其他内容)

您也可以删除-e(然后将取自RAILS_ENV env var,无论如何都应该设置)。

通过捆绑程序运行二进制文件是个好主意。所以,你的命令就变成了这样:

 bundle exec sidekiq

【讨论】:

  • 谢谢!这行得通,我在添加调度程序 gem 时放置了 -r 开关,这来自文档。
猜你喜欢
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 2013-07-10
  • 2018-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多