关注

TL上的各中文实例更新3.4.1后是否有出现Web::PushNotificationWor出错,提示Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT on *****的问题?本站的通知服务目前已停摆,字符编码问题也许是中文的锅。。。
@board

@chasedream1129 @board 我知道你的问题在哪里,你改了 ruby 代码,里面有非英文字符。

@chasedream1129 @board 更具体的,详见这个 issue: github.com/mastodon/mastodon/i

看起来你并不是在 docker 上运行?时至今日,最好的 Mastodon 修改版构建方法,仍是 github 上直接修改,Action CI 在线编译镜像,本地拉取并热更新,即使出错也可以快速回退上一版本。

@official
看来我的问题与这个issue相同,是修改了lib/mastodon/version.rb
我是直接Install from source运行的。

@chasedream1129 建议可以尝试转换 docker,性能损失可以忽略不计,维护成本大大减小,修改更是可以直接热更新,镜像编译等可以通过 GitHub 在线进行,运维只需要 docker-compose up -d 这一句话就够了...
而你要转换过去,只需要 fork 一份官方代码,把你的覆盖,然后 push 到 GitHub,写一份编译镜像的配置文件,就可以了。

@chasedream1129 你这个更简单,强制编码,最前面加上 #encoding: utf-8 就完事了...

@official Ruby 2.x的默认编码就是UTF-8,加上# encoding: utf-8 之后也还是报错,把中文字符删了才行 :o_orz_cry:

@chasedream1129 那可能是后面调用的时候,和UTF8 直接相加,拼接出错误编码的字符串,这个其实可以看代码改一下提个 pr,但没必要...前端输出个版本号修改一下不如 js 改改得了...

@official
看来在app/javascript/mastodon/initial_state.js里加后缀就可以满足需求了

@chasedream1129 如果是我写,直接在页脚引入 js 暴力替换。事实上我对 Mastodon 的界面修改,全都是前端暴力替换,因为改动后端代码的确会影响程序的鲁棒性。

@official 前端有数个地方出现version,都是从这个js引用的数据,直接修改该文件会比较方便

@chasedream1129 了解了。我前端没用自带的主题,就只有未登陆的主页页脚有版本号。

@official 用docker是不是不用每次更新前端都assets:precompile?是镜像里已经编译好webpack了吗

@chasedream1129 事实上,是每次更新,都重新做整个镜像,但镜像pull是某种类似增量更新,所以没有太夸张。

@official 反正镜像构建不是在自己机器上,而是白嫖Github的资源,确实比Install from source更新平滑。下次服务器迁移我会试试的,线上环境就不乱搞了)

登录以加入对话
Monado

Monado 是一个以任天堂为主、面向全平台游戏的、非营利性的中文向社区。在这里,你可以畅所欲言一切和游戏有关的东西,包括但不限于游戏日常、心得、感想、同人等;当然,吐槽自己的生活也完全没有问题。请在遵守所在国家或者地区法律法规的前提下自由的使用。