【问题标题】:"DRAGONFLY: couldn't marshal decode string - got incompatible marshal file format (can't be read)"“DRAGONFLY:无法编组解码字符串 - 编组文件格式不兼容(无法读取)”
【发布时间】:2015-12-24 17:27:38
【问题描述】:

在 Rails 3.2.22、Ruby 2.2.2 中,当我发出请求时,Rails 日志中的唯一输出是 log writing failed. "\xCB" from ASCII-8BIT to UTF-8(以及“\xD9”的类似错误)。从字面上看,这是启动并向服务器发出一个请求时的开发日志:

>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3001, CTRL+C to stop
log writing failed. "\xCB" from ASCII-8BIT to UTF-8
log writing failed. "\xD9" from ASCII-8BIT to UTF-8
log writing failed. "\xD9" from ASCII-8BIT to UTF-8

返回总是只是一个简单的“未找到”。

这是在 Dragonfly gem 更新后出现的(它带来了一个小的 Fog 更新),但我不知道这是如何导致这种情况的,除非配置文件严重拙劣。 Rspec 测试运行,但使用 Capybara 从服务器请求页面的 Cucumber 功能失败(因为它们只是得到“未找到”。)

这类似于“rake test and error : log writing failed. "\xE2" from ASCII-8BIT to UTF-8”,但该问题的公认答案只是“找出生成 UTF-8 字符串的原因并修复其编码”,而我没有很好的线索来确定生成的内容字符串。

ETA:Dragonfly 更新确实是问题所在。我退回更新,然后一步一步地查看their update guide,虽然我仍然从服务器收到相同的响应,但 Dragonfly 现在正在记录到 Rails 记录器,我得到了

DRAGONFLY: couldn't json decode string - got 795: unexpected token at 'i٢'

所以蜻蜓在某种程度上是罪魁祸首。

ETA2:在a similar issue in Dragonfly's Github repo 之后,我将allow_legacy_urls true 添加到我的Dragonfly 配置中,现在错误是这样的:

DRAGONFLY: couldn't marshal decode string - got incompatible marshal file format (can't be read)
format version 4.8 required; 105.217 given

...这与“Ruby on Rails - incompatible marshal file format”中发现的错误几乎完全相同(“给定”元帅版本不同),但那里的解决方案对我没有帮助。

【问题讨论】:

  • 好吧,我曾经在使用 rails 3.1 和 ruby​​ 1.9.3 的 rails 应用程序中遇到 Bad UTF-8 Byte-sequence 错误。我使用了 utf8-cleaner gem in我的应用程序。
  • 对于锚文本,不要说“此页面”(或类似的非描述性文本),而是使用更具描述性的东西。 Stack Overflow 通过解析内部链接并显示真实标题使这变得非常容易。请参阅“Don't use 'click here' as link text”以及the full docs 中的第 6.1 节。
  • 感谢@Minato 推荐 utf8-cleaner。它对这个问题不起作用,但现在我知道了。
  • @theTinMan 我不知道内部链接解析 - 这很有帮助,谢谢。

标签: ruby-on-rails ruby utf-8 dragonfly-gem


【解决方案1】:

也许你有一些非标准的美国英文字符。

你可以使用

# -*- coding: utf-8 -*-

在导致问题的 ruby​​ 文件的顶部。

【讨论】:

  • 您的某个配置文件中可能缺少它。
【解决方案2】:

最后,问题似乎可能是某种未刷新的缓存。我把分支搁置了几天来处理其他问题,在此期间我在其他分支上停止并重新启动了几次开发服务器。当我回到这个分支时,我回滚到 Dragonfly 升级之前,然后运行了我想做的所有其他 gem 更新,最后进行了 Dragonfly 升级,following the upgrade instructions。这次我没有问题。

所以我最好的猜测是不完整的升级留下了缓存项目(或缓存映射),这基本上使缓存无效,导致报告的错误。

【讨论】:

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