ruby-on-rails - Rails 应用程序中的静态图像 Assets 未在 Heroku 产品中显示

标签 ruby-on-rails ruby heroku asset-pipeline

我尝试在部署之前使用以下命令预编译我的图像:

$ RAILS_ENV=production bin/rake assets:precompile

我在用于开发的模板中使用 image_tag

更新:据说 config.serve_static_files 在开发中默认为 true,但在生产中被关闭,因为 Assets 应该通过您的网络服务器提供。我目前只是在 heroku 上使用免费层并且仍在运行 webrick,所以我将此设置为 true,但运气不好。

更新 2:当我将 config.serve_static_files 设置为 false 时,heroku 看不到我的任何 Assets ,我的所有样式都消失了,图像仍然找不到。尽管 heroku 在推送到 master 时确实发送了一条警告消息,说所有“config.serve_static_files 所做的是启用公用文件夹中的所有内容并且与 Assets 管道无关。”。我想它与 Assets 管道无关,因为它只是提供公用文件夹中的 Assets ,而不查看我们的 Assets 目录。我还看到 heroku 在部署时运行预编译命令,所以我不需要每次都这样做。

这让我想知道我使用 image_tag 调用 Assets 的方式是否可能是问题所在,但我不确定为什么会这样?

更新 3: Assets 管道的 Rails 指南说“在常规 View 中,您可以像这样访问 public/assets/images 目录中的图像:<%= image_tag "rails.png" %>。我正在使用此约定调用我的图像,例如 <%= image_tag("lab49", size: "80x30") %>,但是图片仍然不会出现。

更新 4:查看我的回答。

最佳答案

如果您来到这篇文章并且您使用的是 Heroku,只有当您使用图像文件扩展名时,Heroku 才会接受您的图像。

这会起作用:

<%= image_tag "lab49.png", size: "80x30" %>

这将不起作用(尽管它会在本地起作用):

<%= image_tag "lab49", size: "80x30" %>

关于ruby-on-rails - Rails 应用程序中的静态图像 Assets 未在 Heroku 产品中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35320418/

相关文章:

ruby-on-rails - Rails 3 - 生产环境 - smtp 电子邮件问题

ruby-on-rails - 为什么我的 HTTP Origin header 与 request.base_url 不匹配以及如何修复?

ruby-on-rails - 被 RHEL 6.4 上的 OpenShift 难住了

ruby - 在 Ruby 中获取 block 返回 true 的第一个可枚举元素的最快方法是什么?

python - Heroku 不读取 requirement.txt 文件

python - 没有网络进程运行错误 - 在 Heroku 上部署 Django

ruby-on-rails - 自定义Rails路由的正确方法

ruby-on-rails - Rails 协会扩展 : Override a HABTM assignment (collection=) method

ruby-on-rails - Nil :NilClass 的 Factory Girl 未定义方法

javascript - process.env.NODE_ENV 是否自动设置为 'production' ?