我的Rails 4应用程序上的所有样式表子文件夹都在Heroku中工作,除了一个。没有工作的那个在开发中工作很快,但是当我部署它时,它不起作用。它显示404错误并加载除scss之外的所有内容。除了root,我还有2个不同的命名空间,#34;博客"和" admin"。它是" admin"子文件夹不起作用,但它的结构与" blog"相同。子文件夹和" theme1"主站点的子文件夹...这两个都很好地服务于资产。
我已经尝试了资产管道的所有常规资产调试(serve_static_files,清理资产,预编译),但它并没有什么不同,因为我的资产大部分工作,而不是这个文件夹。< / p>
这是我的文件结构: 样式表
├── 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子文件夹在开发中工作,我只是无法弄清楚它为什么不能在生产中工作。
答案 0 :(得分:2)
问题出现在生产环境中,在开发环境中完美运行表明资产没有得到遵守。
这是与Heroku 中Rails应用程序配置相关的问题。
一个解决方案是在开发环境中预编译资产并将编译后的资产上传到heroku 。
要了解有关此内容的更多信息,请参阅针对rails应用的Heroku配置。
请按照以下步骤操作:
确保文件/config/environments/production.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文件:
bundle exec rake assets:precompile RAILS_ENV=production
提交并推送css文件到heroku:
git add .
git commit -m "Precompiled assets"
git push heroku master