【发布时间】: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