![](/img/trans.png)
[英]“undefined method” error when running delayed_jobs in multiple queues with ./script/delayed_job -n
[英]Undefined Method Error when creating delayed_job workers with script/delay_job
運行多個工人有點問題。
當創建具有rake jobs:work
作業運行沒有問題,即使多次調用它,但是當使用ruby script/delayed_job -n 5 start all
jobs 在Syck::DomainType
上使用未定義的方法創建工作人員時。
我已經搜索了很多,但似乎找不到解決方案。 我在 Mongoid 后端運行 DelayedJob。 寶石版本:
有沒有人遇到過類似的錯誤/有解決方案? 或者缺少一些關於為什么/如何根據調用方式不同創建工作人員的信息?
我有同樣的問題。 我可以通過在控制台中加載作業並嘗試反序列化來重現它:
$ rails console production
> j = Delayed::Job.last
> YAML.load(j.handler)
在我的生產環境中,我得到了一個 Syck::DomainType object 而在開發中它只是反序列化了我的 object(存儲在 db 中的數據在兩種情況下都是相同的)。
長話短說,我意識到我的服務器上有 ruby 1.9.1 而不是 1.9.2。 使用 ruby-1.9.2p290 切換到 rvm 托管環境為我解決了這個問題。
也許ruby script/delayed_job -n 5 start all
不會調用Bundler.setup
,這就是為什么它不同於其他啟動工作人員的方式? (只是猜測)
您可以通過將其放在config/application.rb
的頂部來修復Syck::DomainType
錯誤
require 'yaml'
YAML::ENGINE.yamler = 'syck'
# [...]
require File.expand_path('../boot', __FILE__)
如果存在 libyaml,則問題似乎源自 bundler >= 1.0.10 加載 psych 並覆蓋某些 sycks 功能。 我能夠從我的系統中刪除 libyaml 安裝,我知道這對每個人來說都是不可能的。 很難追查,希望這篇文章對其他人有幫助
運行它:
bundle exec ./script/delayed_job -n 5 start
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.