2014-10-17 73 views
2

我遇到了一个奇怪的问题,导致我的Heroku工人崩溃。我们使用Ruby on Rails和delayed_job作为后台作业。我使用Vero gem将工作传递给delayed_job。Delayed_job崩溃的Heroku工人(YAML问题?)

这是调用我做出“鉴定”用户维洛:

after_save { self.identify! } 

然后将作业中,看起来像这样的队列:

--- !ruby/object:Vero::Api::Workers::Users::TrackAPI 
domain: https://api.getvero.com 
options: 
    :email: ******@gmail.com 
    :data: 
    :email: ******@gmail.com 
    :name: ? ? 
    :first_name: ? 
    :last_name: ? 
    :school_id: -1 

这个问题似乎是那些问号。我不知道他们为什么显示在那里而不是一串文字。这是出现的错误:

Psych::SyntaxError: (<unknown>): mapping keys are not allowed in this context at line 7 column 14 

不幸的是,而不是工作只是失败..它实际上是崩溃的工人..不允许用于另一个要处理的工作。

有没有人遇到过这个问题?我如何格式化YAML使其不会使工作人员崩溃?

谢谢!

回答

2

看看这个用户。似乎他输入了一些数据,而这些数据是通过数据库中的字段编码接受的。 你使用utf-8吗?如果他进入UTF-16可以在红宝石translitirate它为UTF-8

+0

嘿@ dre-hh,谢谢你的回答!表格设置是......类型:InnoDB,编码:cp1252西欧(latin1),整理:latin1_swedish_ci。所以我想我们不使用utf-8。你认为这是问题吗? – criticerz 2014-10-27 22:06:39

+0

在您的db中找到用户,它的'identify!'请求已生成此worker。 'User.find_by_email'chuck_testa @ example.com''。看看他的名字和first_name。同时检查数据库记录。我强烈怀疑,这个问题来自用户输入名称,但不能由cp1252处理的符号。所以你将不得不手动解析输入。如果你使用UTF-8,它将被保存为一些无法识别的符号,但是整个字符串不会被破坏。看到http://stackoverflow.com/questions/2708958/differences-between-utf8-and-latin1 – 2014-10-28 13:56:50

+0

我想这些问号 是这个'Mojibake'的stackoverflow帖子提到 – 2014-10-28 14:05:05

-2

尝试了这一点:

你在你的YAML文件中,涉及到improper spacing的一个有一个语法错误。

+0

作者对yaml文件生成没有影响。这个yaml文件是在调用user.identify!之后由delayed_job gem生成的。在呼唤身份! vero gem通过传递一些用户属性来启动延迟的工作工作者 – 2014-10-28 14:09:11