运行多个 worker 有点问题。
当使用 rake jobs:work
jobs 创建 worker 时运行没有问题,即使多次调用它,但是当使用 ruby script/delayed_job -n 5 start all
作业因 Syck::DomainType
上的未定义方法而失败。
我已经搜索了很多,但似乎无法找到解决方案。我在 Mongoid 后端运行 DelayedJob。 gem 版本:
- 抽成 0.9.2
- rails 3.0.6
- 延迟作业 2.1.4
- delayedjob_mongoid 1.0.2
有没有人遇到过类似的错误/有解决方案?或者缺少一些关于为什么/如何根据调用方式以不同方式创建 worker 的信息?
最佳答案
我遇到了完全相同的问题。我可以通过在控制台中加载作业并尝试反序列化来重现它:
$ rails console production
> j = Delayed::Job.last
> YAML.load(j.handler)
在我的生产环境中,我得到了一个 Syck::DomainType 对象,而在开发中它只是反序列化了我的对象(两种情况下存储在 db 中的数据是相同的)。
长话短说,我意识到我的服务器上有 ruby 1.9.1 而不是 1.9.2。使用 ruby-1.9.2p290 切换到 rvm 管理环境解决了我的问题。
关于ruby-on-rails - 使用脚本/delay_job 创建 delayed_job worker 时出现未定义方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6766431/