【问题标题】:Uninitialized constant for ActiveRecord model in script/delayed_job, but not rake jobs:work脚本/delayed_job 中 ActiveRecord 模型的未初始化常量,但不是 rake jobs:work
【发布时间】:2011-06-30 12:32:00
【问题描述】:

我将 Rails 2.3.8 与 Ruby 1.8.7 一起使用。我创建了一个名为Foo 的新ActiveRecord 模型(使用script/generate model Foo ... 生成),方法为#self.bar(x, y),在控制器中我调用Foo.send_later(:bar, x, y)。在我的 (Windows) 开发环境中,当我运行 rake jobs:work 时,它可以正常工作。在我的(Linux)生产环境中,如果我正在运行rake jobs:work RAILS_ENV=production,这也可以工作,但如果我正在运行RAILS_ENV=production script/delayed_job start,我会在delayed_job.log 中得到

2011-02-19T12:27:11-0800: * [Worker(delayed_job host:myhost pid:3673)] acquired lock on Foo.bar
Could not load object for job: uninitialized constant Foo
2011-02-19T12:27:11-0800: * [JOB] delayed_job host:myhost pid:3673 completed after 0.0024
2011-02-19T12:27:11-0800: 1 jobs processed at 32.4446 j/s, 0 failed ...

我的其他延迟工作工作正常,只有这个新工作有问题。 Foo 可以从script/console production 访问,我尝试过touch tmp/restart.txt 甚至重新启动apache2 然后重新启动delayed_job 脚本,但没有任何变化。

以前有人见过这个问题吗?

【问题讨论】:

    标签: ruby-on-rails activerecord delayed-job


    【解决方案1】:

    screen 会话中使用rake jobs:work,或者使用god gem 或monit 运行它,这样如果进程死亡,它将被“复活”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 2023-01-13
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      相关资源
      最近更新 更多