2018-8-2 解决错误: invalid byte sequence in US-ASCII (ArgumentError)

Ruby on Rails + Puma 遇到了这个问题。

这篇文章是什么

讲如何解决 invalid byte sequence in US-ASCII (ArgumentError)

问题来源

Ruby on Rails 5 + Puma 遇到了这个问题。

问题具体症状

短描述:

puma 重启异常缓慢

长描述

puma 启动之后,我写了新代码需要部署新版本到服务器。
那么为了无缝部署(0 downtime deployment)就发送 phased-restart 让 puma 重启。

此时出现问题,puma 会占用 100% CPU,持续几分钟。
然后 timeout kill worker。有时候重启成功有时候重启失败。

总之整个部署的体验非常糟糕。

解决方法

先看日志

/var/www/witticism.com/shared/log$ tail -f puma.stderr.log

我在 /var/www/witticism.com/shared/log 目录下运行 tail -f puma.stderr.log 命令。

结果如下:
error

错误信息:
invalid byte sequence in US-ASCII (ArgumentError)

尝试1(失败)

https://stackoverflow.com/questions/5286117/incompatible-character-encodings-ascii-8bit-and-utf-8
not-working
绿框这两个试了不管用。

尝试2(成功)

编辑 ~/.profile 文件

    vim ~/.profile

然后添加如下几行

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

之后我再 mina deploy --verbose
然后让 puma 重启,一下就好了,非常快,3秒吧。

其实就是编码问题。