如何在Heroku上为Rails应用安装Poppler以实现Active Storage PDF预览?
在Heroku新栈上配置Active Storage PDF预览(Poppler)的问题
我想在Active Storage中启用PDF预览功能(参考Ruby on Rails官方文档中ActiveStorage::Preview相关内容)。本地Mac环境下通过brew install poppler安装了Poppler,同时在Gemfile中引入了Poppler gem,预览功能正常运行。但部署到Heroku时构建失败,报错如下:
An error occurred while installing gobject-introspection (4.0.5), and Bundler cannot continue. In Gemfile: poppler was resolved to 4.0.5, which depends on gio2 was resolved to 4.0.5, which depends on gobject-introspection
我尝试使用一款Poppler buildpack,但未解决问题。请问有没有人成功在较新的Heroku栈上安装Poppler?
解决方法
1. 更换适配新Heroku栈的Poppler buildpack
旧的buildpack可能不再兼容heroku-22或heroku-24这类新栈,建议改用维护活跃、适配新栈的Poppler buildpack:
- 先移除已添加的旧buildpack:
heroku buildpacks:remove 旧的Poppler buildpack名称或标识 - 添加适配新栈的buildpack:
这类buildpack会自动在Heroku环境中安装正确版本的Poppler及依赖,避免编译错误。heroku buildpacks:add 适配新栈的Poppler buildpack
2. 移除Gemfile中的Poppler gem(推荐方案)
其实Active Storage的PDF预览只需要系统级的Poppler工具(如pdftocairo),不需要引入Ruby的Poppler gem。移除该gem可以彻底规避gobject-introspection这类依赖的安装问题:
- 打开Gemfile,删除
gem 'poppler'行 - 本地执行
bundle install更新依赖锁定文件 - 重新部署到Heroku,确保已添加正确的Poppler buildpack
3. 验证Poppler安装状态
部署完成后,通过Heroku控制台确认Poppler是否正常安装:
heroku run pdftocairo --version
如果返回版本信息,说明系统级Poppler已就绪,Active Storage的PDF预览功能即可正常工作。
内容的提问来源于stack exchange,提问作者Emmet Gibney
相关产品推荐
相关产品推荐

