【问题标题】:Rails resque: Record not found when passing variable from controller to workerRails resque:将变量从控制器传递给工作人员时找不到记录
【发布时间】:2012-03-02 06:49:38
【问题描述】:

我有一个非常简单的控制器:

def create
  @poem = Poem.new(params[:poem])
  @poem.prose = @poem.content
   @poem.save
   Resque.enqueue(PoemWork, @poem.id)
 ....

和一个非常简单的工人:

class PoemWork
 @queue = :poem_queue
 def self.perform(poem_id)
  @poem = Poem.find(poem_id)
  txt = @poem.content
  #do stuff here 
  @poem.save
 end
end

而且我不断收到“找不到 id=53 的诗”之类的消息。就这样……

我尝试只传递字符串、整数等。但它也以 ActiveRecord::RecordNotFound 结尾

有什么问题?

【问题讨论】:

  • 您的后台工作进程是否连接到与 Web 服务器进程相同的数据库?
  • 嗯...我该如何检查?我有两个使用 resque 的应用程序,我为它们使用了不同的 redistogo dbs(在 resque.rb 中定义它们)......这也是 localhost 上的错误,还没有远程测试过
  • 提供您用来运行工作人员的确切命令。您是否在本地以开发模式运行 Rails?
  • bundle exec rake resque:work QUEUE='*' yes in development mode

标签: ruby-on-rails ruby background-process resque


【解决方案1】:

所以问题是工人在对象实际创建之前就开始了。

必须安装重启失败作业的 gem。

wrote the post about it

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多