ruby-on-rails - 带有 Google 适配器的 Chartkick 在 Heroku Production 上卡住了“正在加载...”
问题描述
我的问题是,无论我尝试什么,我都会遇到“正在加载..”,当我使用 chartkick 和 wicked_pdf 时,我应该有图表。
宝石文件
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary-edge', '0.12.4.0'
gem 'chartkick'
控制器
respond_to do |format|
format.html
format.pdf do
render pdf: "FILENAME",
template: "ratingreports/show.html.erb",
window_status: "FLAG_FOR_PDF",
margin: { top: 5,
bottom: 10,
left: 0,
right: 0 },
background: true,
page_size: 'Letter',
default_header: false,
footer: {
:html => {
:template => 'shared/footer.html.erb'
}
}
end
end
pdf.js
setTimeout((function () {
window.status = "FLAG_FOR_PDF";
Object.keys(Chartkick.charts).forEach(function (key) {
Chartkick.charts[key].redraw();
});
}), 5000);
显示.html.erb
head>
<%= javascript_include_tag wicked_pdf_asset_base64('pdf') %>
<%= javascript_include_tag wicked_pdf_asset_base64('loader') %>
<%= javascript_include_tag wicked_pdf_asset_base64('chartkick') %>
<%= wicked_pdf_stylesheet_link_tag "application" %>
</head>
...
<%= column_chart @scorecount, colors: ["#46ceb7"], adapter: "google", discrete: true, height: "200px", width: "400px" %>
...
配置/wicked_pdf.rb
if Rails.env.production?
wkhtmltopdf_path = "#{Rails.root}/bin/wkhtmltox_0.12.5-1.xenial_amd64.deb"
else
WickedPdf.config = {
exe_path: '/usr/local/bin/wkhtmltopdf'
}
end
我将 loader.js 和 chartkick.js 放在我的 assets/javascript 目录中。这是我至少可以让它从“找不到适配器”到“正在加载”的唯一方法。
解决方案
每次......我工作一天,将其发布到堆栈,然后我在一小时后找到答案。
所以,要解决这个问题,我必须删除(注意:我“gem uninstall wkhtmltopdf-binary-edge”,然后也从 gemfile 中删除,所以它会删除可执行文件)
gem 'wkhtmltopdf-binary-edge', '0.12.4.0'
并替换为
gem 'wkhtmltopdf-heroku'
并在 wicked_pdf.config
if Rails.env.production?
wkhtmltopdf_path = Gem.bin_path('wkhtmltopdf-heroku', 'wkhtmltopdf-linux-amd64')
else
WickedPdf.config = {
exe_path: '/usr/local/bin/wkhtmltopdf'
}
end
叮!薯条做好了。希望有一天能对某人有所帮助!终于可以推出这款产品了!
推荐阅读
- scala - 在 Intellij 和 ScalaFiddle 中的 Scala 上打印
- ruby-on-rails - Rails 服务器没有启动并且没有错误
- php - 多张图片上传多个文件字段
- r - 错误 devtools::check - 'pillar' 的 loadNamespace() 中的 .onLoad 失败
- javascript - 使用 kurento 媒体服务器在 mp4 中录制 webRTC 流
- java - java.sql.date 的 getter 和 setter
- r - 使用特殊字符(如 %>%)打包部署的函数
- datastage - ibm infosphere 元数据资产管理器按源更新资产
- android - 在android中生成对称密钥,可用于生成Json Web Token
- python - 将mysql表模式动态写入Avro格式