将 Rails 应用程序上传到 heroku 后图像损坏

Posted

技术标签:

【中文标题】将 Rails 应用程序上传到 heroku 后图像损坏【英文标题】:Images broken after uploading Rails app to heroku 【发布时间】:2015-12-31 02:52:47 【问题描述】:

在本地显示良好。但是当我上传到 Heroku 时,我得到以下信息:

<%= image_tag('logo-red.png') %>

它位于 assets/images/

我没有使用 Turbolinks。我是否需要在 Heroku 上运行命令来解决此问题,还是缺少一些配置设置?

编辑 1:尝试运行 heroku run rake assets:precompile RAILS_ENV=production

编辑 2:heroku 工作人员的回应:

看起来您的应用正在正确编译该图像: 〜/公共/资产$密码 /应用程序/公共/资产 〜/公共/资产$ ls | grep logo-红色 标志-红色-a07050d882e1dba431cef2130d39f929c611eaf8b0ec3c50db0742ddccb14d93.png

编辑 3:见附件截图

【问题讨论】:

查看devcenter.heroku.com/articles/rails-4-asset-pipeline 嗯.. 仍然无法确定问题所在。我已经在使用 gem 'rails_12factor' 并通过 image_tag 提供我的资产。 资产/图片是指应用/资产/图片? 是的,应用程序/资产/图像 如果您在本地计算机上运行rake assets:precompile,您是否在public/assets/ 文件夹中看到带有一些哈希的文件? 【参考方案1】:

之前在 Heroku 上遇到过这个问题 - 我们通过 precompiling Heroku 本身的资产解决了这个问题:

$ heroku run rake assets:precompile RAILS_ENV=production

我知道当你将 repo 推送到 Heroku 时就完成了;如果您在他们的服务器上编译资产,这是似乎可以解决的问题之一。

只要确保RAILS_ENV 是生产环境,您也可以在本地预编译:

$ rake assets:precompile RAILS_ENV=production

【讨论】:

hmmm.. 试了一下,但没有运气:/【参考方案2】:

尝试在本地计算机上运行:

rake assets:precompile
rake assets:clean

然后提交并推送到heroku。

同时检查您的production.rb 文件并确保与编译或预编译相关的所有内容都是正确的而不是错误的,即:

config.serve_static_assets = true
config.assets.compile = true

另外,请确保 rails_12factor 在您的 gemfile 中,如下所示:

gem 'rails_12factor', group: :production

【讨论】:

【参考方案3】:

如果您的问题仍然存在,请在以下答案之后

你可以试试:

<%= asset_path 'logo-red.png' %>

【讨论】:

以上是关于将 Rails 应用程序上传到 heroku 后图像损坏的主要内容,如果未能解决你的问题,请参考以下文章

通过 API 上传文件时 Heroku 前端超时

在 Heroku 和 Amazon S3 上的生产 Rails/Vue 应用程序中加载字体时出现 CORS 错误

在'rake assets:precompile'之后,Rails 4 资产未加载到 Heroku

应用程序错误:Heroku,Ruby on Rails 4,警告:rails_12factor,vendor / bundle,no Procfile

如何将 Rails + Webpacker 应用程序部署到 Heroku?

Rails 3 和 Heroku:推送时自动“rake db:migrate”?