在 Heroku 上 delayed_job 中导致 JSON 解析错误的原因是什么

What is causing a JSON parsing error in delayed_job on Heroku

我在 ruby on rails 6.0.2 应用程序的 Heroku 上看到这个错误。

JSON::ParserError: 767: unexpected token at '' (Most recent call first)

发生在 app/bin/rake 的第 9 行。

4 rescue LoadError => e
5  raise unless e.message.include?('spring')
6 end
7 require_relative '../config/boot'
8 require 'rake'
9 Rake.application.run

追溯显示它发生在 active_storage video_analyzer.rb 文件中:

/app/vendor/ruby-2.6.5/lib/ruby/2.6.0/json/common.rb line 156 in parse
File /app/vendor/ruby-2.6.5/lib/ruby/2.6.0/json/common.rb line 156 in parse
File /app/vendor/bundle/ruby/2.6.0/gems/activestorage-6.0.2/lib/active_storage/analyzer/video_analyzer.rb line 107 in block in probe_from

video_analyzer 最终被 delayed_job 调用。该应用程序正在上传视频,但我没有发现上传或观看视频有任何问题。那么是什么导致了这个异常呢?我从 rails 5 升级到 rails 6 后才开始看到问题。

虽然我在 heroku 上包含了 ffmpeg gem,但我仍然需要在 heroku 上安装 ffmpeg 二进制文件。我尝试使用以下命令 buildpack

heroku buildpacks:add --index 1 https://github.com/laddhadhiraj/heroku-buildpack-ffmpeg
heroku config:set FFMPEG_BIN_URL="http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz"

但是,FFMPEG_BIN_URL 已经过时了。然而,buildpack 安装 ffmpegffprobe。从报错信息可以看出,问题是缺少ffprobe导致的,这样看来报错信息已经修复了。目前尚不清楚 activestorage 功能是否完全与 ffmpeg 一起工作,因为尚未安装以下方法,ffserver, ffmpeg-10bit, qt-faststart

如果有人知道更新的构建包,请post回答或评论。