You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Rails应用至Heroku遇application.css资源缺失问题求助

解决Rails部署Heroku时ActionView::Template::Error (application.css不在asset pipeline中)的问题

核心修复步骤

1. 修正app/assets/config/manifest.js配置

必须在清单中明确声明要预编译的SCSS文件,Rails的Sprockets依赖这个清单识别需要处理的资产:

//= link_tree ../images
//= link_directory ../stylesheets .css
//= link application.scss  // 新增这一行

添加后,Sprockets会将application.scss编译为application.css,预编译时生成带哈希的生产版本。

2. 确保application.scss的正确结构

移除所有Sprockets的*=指令,仅保留Sass的@import语法:

// 移除所有 *= require 或 *= require_tree 之类的语句
@import "bootstrap";
// 自定义样式写在下方

3. 本地预编译验证

先在本地生产环境执行预编译,确认能生成正确的CSS文件:

RAILS_ENV=production rails assets:precompile

检查public/assets目录,确认生成了类似application-<随机哈希>.css的文件。如果本地生成失败,排查依赖问题(比如缺少sass-rails或bootstrap gem)。

4. 检查Heroku构建日志

部署后查看Heroku的资产预编译过程,确认没有报错:

heroku logs --tail | grep "assets:precompile"

如果日志中出现编译失败提示(比如找不到Bootstrap模块、Sass语法错误),针对性修复后重新部署。

5. 确认config/environments/production.rb的关键配置

确保生产环境的静态资产配置正确:

config.public_file_server.enabled = true
config.assets.compile = false  # 禁用动态编译,依赖预编译文件
config.assets.digest = true    # 启用哈希文件名,避免缓存问题

6. 清理Heroku缓存

如果之前的部署缓存导致旧配置残留,执行缓存清理后重新部署:

heroku repo:purge_cache
git push heroku main

7. 确认Gemfile依赖完整性

确保Gemfile中包含必要的资产处理依赖:

gem "bootstrap"
gem "sass-rails"

执行bundle install后再推送代码到Heroku。


内容的提问来源于stack exchange,提问作者TheCodeSommelier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 08:32:27