css - Heroku Rails 4 上的一个 Assets 文件夹 404 错误

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

我的 Rails 4 应用程序上的所有样式表子文件夹都可以在 Heroku 中使用,只有一个除外。不起作用的那个在开发中工作得很好,但是当我部署它时,它不起作用。它显示 404 错误并加载除 scss 之外的所有内容。除了根之外,我还有两个不同的命名空间:“blog”和“admin”。这是“admin”子文件夹不起作用,但它的结构与主站点的“blog”子文件夹和“theme1”子文件夹相同......它们都可以很好地服务 Assets 。

我已经尝试了 Assets 管道的所有常用 Assets 调试(serve_static_files、清理 Assets 、预编译),但没有什么区别,因为我的大部分 Assets 都在工作,只是这个文件夹不行。

这是我的文件结构: 样式表

├── admin_manifest.scss # this is precompiled
├── _admin
|   ├── css
         ├── "10 stylesheets"
|   └── admin.scss #@imports of the 10 stylsheets & fonts 
├── application.scss # this is precompiled and includes the theme1_manifest.scss as well as plugins, jquery, etc
├── blog_manifest.scss # this is precompiled
├── _blog
|   ├── shortcodes.scss
|   └── theme_style.scss
├── theme1_manifest.scss # this is precompiled
├── _theme1
|   ├── shortcodes.scss
|   └── theme_style.scss

同样,blog 和 theme1 子文件夹工作完美,admin 子文件夹在开发中工作,我只是不明白为什么它在生产中不起作用。

最佳答案

该问题出现在生产环境中,但在开发环境中运行良好,表明 Assets 未得到编译。

这是一个与 Heroku 中 Rails 应用的配置相关的问题

一个解决方案在开发环境中预编译 Assets 并将编译后的 Assets 上传到heroku

要了解更多信息,请阅读Rails 应用程序的 Heroku 配置

请按照以下步骤操作:

确保文件 /config/environments/development.rb 中包含以下内容:

config.cache_classes = true
config.serve_static_assets = true
config.assets.compile = true
config.assets.digest = true

在生产中添加 gem rails_12factor 以及 pg gem

gem “rails_12factor”

预编译CSS文件:

捆绑 exec rake Assets :预编译 RAILS_ENV=生产

提交CSS文件并将其推送到heroku:

git add .
git commit -m "Precompiled assets"
git push heroku master

关于css - Heroku Rails 4 上的一个 Assets 文件夹 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40141151/

相关文章:

css - 在 ul、superfish-modified.css 中将 li 元素水平居中

html - Bootstrap 在一行中为多个单词着色?

ruby-on-rails - 如何在 rails 4 的 ActiveRecord 查询中获取哈希(attr_accessor)中的计算值?

ruby-on-rails - 获取 30 分钟前创建的记录 - Rails

ruby-on-rails - Rails 3.1 和 Http 页面缓存

html - Div类是错误的方式吗?

html - 使文本在背景图像上居中

css - 更改 rails 的字体样式 "notices"=>

reactjs - Heroku 重定向 Next.js React 客户端应用程序 http 到 https

ruby-on-rails - 如果我使用 Cloudflare 的 "Full SSL",是否需要为 Heroku 购买另一个 SSL 证书?