我的 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/