Heroku 和 wicked-pdf --- libwkhtmltox.so.0 没有这样的文件
Heroku and wicked-pdf --- libwkhtmltox.so.0 No such file
我已经在我的 Rails 应用程序本地安装了 wicked_pdf,它正在生成 pdf。
当我将它推送到 Heroku 并尝试生成 pdf 时,我得到:
Command Error: /app/bin/wkhtmltopdf: error while loading shared
libraries: libwkhtmltox.so.0: cannot open shared object file: no such
file or directory
我是 运行 Arch。 wkhtmltopdf 是使用 pacman 安装的,并在 /usr/bin/wkhtmltopdf 和 /usr/lib64/libwkhtmltox.so.0
中生成了条目
wkhtmltopdf 被复制到 my_rails_app/bin/wkhtmltopdf,Heroku 似乎发现它没问题。
libwkhtmltox.so.0 已经复制到三个位置,Heroku 还是找不到。
my_rails_app/bin/libwkhtmltox.so.0
my_rails_app/lib/libwkhtmltox.so.0
my_rails_app/lib64/libwkhtmltox.so.0
Heroku 在哪里需要这个文件?
-- 编辑--
测试 "wkhtmltopdf http://www.google.com google.pdf" 在我的本地机器上按预期执行(它生成一个 pdf 文件)。
使用 "heroku run bash" 调出连接到我的 heroku 服务器的命令行;
% which wkhtmltopdf
=> /app/bin/wkhtmltopdf
% 其中 libwkhtmltox.so.0
=> /app/bin/libwkhtmltox.so.0
% wkhtmltopdf http://www.google.com google.pdf
=> wkhtmltopdf: 加载共享库时出错: libwkhtmltox.so.0: 无法打开共享对象文件: 没有这样的文件或目录
这个问题似乎与 Heroku 对容器的使用以及我的剪切和粘贴工作有关,移动的是符号链接而不是实际文件(请看图)。我要感谢 Arch 的仆从,他给了我我需要的指导,但它包含的评论暗指我的心智能力大大降低,并且惊讶于我什至可以安装 Arch,更不用说在它上面开发了。所以我有点舍不得给他信任。
事实上,有了新信息,我的 google foo 找到了 https://github.com/dscout/wkhtmltopdf-buildpack 在删除了我之前的修复尝试和 arch pacman 下载后,这个构建包在 ruby gems 工作Arch pacman 失败了。
我现在是一个快乐的白痴:-)
wicked_pdf gem 主要依赖enter link description here 二进制 'wkhtmltopdf'
在你的本地机器上执行命令 which wkhtmltopdf
。
它会告诉你它所在的路径。
在我的例子中,它位于 /usr/local/bin/wkhtmltopdf
接下来在您的开发应用程序中,检查 wicked_pdf.rb
您必须已将 :exe_path 定义到上述位置。
您的语法必须看起来像这样:
WickedPdf.config = {
:exe_path => '/usr/local/bin/wkhtmltopdf'
}
当你移动到二进制文件之上的 heroku 时,它的路径配置将不起作用。
这里有两个选择:
第一种方式:来源:This article.
在您的应用程序根目录中创建一个 bin 文件夹,并将二进制文件放入其中。
您的二进制文件将位于:project_root/bin/wkhtmltopdf-amd64
然后link到:exe_path到这个位置。
这可能有效(虽然没有尝试过)。
缺点:在项目目录中有二进制文件不是一个好方法。更好的选择是将您的二进制文件放在 AWS 或任何云服务中并使用路径位置。
第二种方式:(我实现了)
我避免在 heroku 中使用这个二进制文件,并且没有提供对云服务的任何访问权限。
我使用了 wkhtmltopdf-heroku gem
此 gem 在内部使用相同的二进制文件 (wkhtmltopdf)。
检查此 gem(包含相同库)的 bin 文件夹。
用法:
将以下 gem 添加到 Gemfile。
gem 'wicked_pdf'
gem 'wkhtmltopdf-heroku'
config/initializers/wicked_pdf.rb
#comment out all the :exe_path settings.
# our application will be using wkhtmltopdf-heroku gem
#(which will handle the path settings)
其余的 Mime 配置和 require 语句仍然有效。
它确实对我有用。希望对你有帮助:)
我已经在我的 Rails 应用程序本地安装了 wicked_pdf,它正在生成 pdf。
当我将它推送到 Heroku 并尝试生成 pdf 时,我得到:
Command Error: /app/bin/wkhtmltopdf: error while loading shared libraries: libwkhtmltox.so.0: cannot open shared object file: no such file or directory
我是 运行 Arch。 wkhtmltopdf 是使用 pacman 安装的,并在 /usr/bin/wkhtmltopdf 和 /usr/lib64/libwkhtmltox.so.0
中生成了条目wkhtmltopdf 被复制到 my_rails_app/bin/wkhtmltopdf,Heroku 似乎发现它没问题。
libwkhtmltox.so.0 已经复制到三个位置,Heroku 还是找不到。
Heroku 在哪里需要这个文件?
-- 编辑--
测试 "wkhtmltopdf http://www.google.com google.pdf" 在我的本地机器上按预期执行(它生成一个 pdf 文件)。
使用 "heroku run bash" 调出连接到我的 heroku 服务器的命令行;
% which wkhtmltopdf
=> /app/bin/wkhtmltopdf
% 其中 libwkhtmltox.so.0
=> /app/bin/libwkhtmltox.so.0
% wkhtmltopdf http://www.google.com google.pdf
=> wkhtmltopdf: 加载共享库时出错: libwkhtmltox.so.0: 无法打开共享对象文件: 没有这样的文件或目录
这个问题似乎与 Heroku 对容器的使用以及我的剪切和粘贴工作有关,移动的是符号链接而不是实际文件(请看图)。我要感谢 Arch 的仆从,他给了我我需要的指导,但它包含的评论暗指我的心智能力大大降低,并且惊讶于我什至可以安装 Arch,更不用说在它上面开发了。所以我有点舍不得给他信任。
事实上,有了新信息,我的 google foo 找到了 https://github.com/dscout/wkhtmltopdf-buildpack 在删除了我之前的修复尝试和 arch pacman 下载后,这个构建包在 ruby gems 工作Arch pacman 失败了。
我现在是一个快乐的白痴:-)
wicked_pdf gem 主要依赖enter link description here 二进制 'wkhtmltopdf'
在你的本地机器上执行命令 which wkhtmltopdf
。
它会告诉你它所在的路径。
在我的例子中,它位于 /usr/local/bin/wkhtmltopdf
接下来在您的开发应用程序中,检查 wicked_pdf.rb 您必须已将 :exe_path 定义到上述位置。 您的语法必须看起来像这样:
WickedPdf.config = {
:exe_path => '/usr/local/bin/wkhtmltopdf'
}
当你移动到二进制文件之上的 heroku 时,它的路径配置将不起作用。
这里有两个选择:
第一种方式:来源:This article.
在您的应用程序根目录中创建一个 bin 文件夹,并将二进制文件放入其中。
您的二进制文件将位于:project_root/bin/wkhtmltopdf-amd64
然后link到:exe_path到这个位置。
这可能有效(虽然没有尝试过)。
缺点:在项目目录中有二进制文件不是一个好方法。更好的选择是将您的二进制文件放在 AWS 或任何云服务中并使用路径位置。
第二种方式:(我实现了)
我避免在 heroku 中使用这个二进制文件,并且没有提供对云服务的任何访问权限。 我使用了 wkhtmltopdf-heroku gem 此 gem 在内部使用相同的二进制文件 (wkhtmltopdf)。 检查此 gem(包含相同库)的 bin 文件夹。
用法: 将以下 gem 添加到 Gemfile。
gem 'wicked_pdf'
gem 'wkhtmltopdf-heroku'
config/initializers/wicked_pdf.rb
#comment out all the :exe_path settings.
# our application will be using wkhtmltopdf-heroku gem
#(which will handle the path settings)
其余的 Mime 配置和 require 语句仍然有效。
它确实对我有用。希望对你有帮助:)