Rails 5.2.6部署Heroku时提示rails_admin.css不在资产管道如何解决
可行解决方案
你项目的assets文件夹为空不是问题诱因,rails_admin/rails_admin.css、rails_admin/rails_admin.js是Rails Admin gem内置的资源,不需要手动放到项目目录下,可按以下步骤排查修复:
- 第一步:先删除你在
config/initializers/assets.rb中手动添加的预编译规则,Rails Admin 2.0.2已经内置了资源预编译注册逻辑,手动添加反而容易引发路径匹配冲突。 - 第二步:检查
config/environments/production.rb的两个配置项:- 确保
config.assets.compile = true,开启运行时动态编译兜底,避免预编译遗漏资源直接报错 - 确保
config.public_file_server.enabled = true,Heroku环境需要该配置开启静态资源服务
- 确保
- 第三步:如果你的项目使用Sprockets 4.x(可查看
Gemfile.lock确认版本),需要在app/assets/config/manifest.js中添加如下声明:
Sprockets 4默认以manifest.js的声明作为预编译依据,旧版本的assets.rb预编译规则优先级会被覆盖。//= link rails_admin/rails_admin.css //= link rails_admin/rails_admin.js - 第四步:配置调整完成后先清理本地和Heroku的缓存,本地执行
rails tmp:cache:clear,Heroku端执行heroku run rails tmp:cache:clear assets:clean,之后再重新推送代码部署。 - 第五步:如果以上配置都无效果,直接将Rails Admin的内置资源导出到项目本地,执行生成命令:
该命令会自动把对应版本的css、js资源拷贝到你项目的rails g rails_admin:installassets/javascripts和assets/stylesheets目录下,预编译时会直接读取本地文件。 - 第六步:部署到Heroku前可先本地验证预编译是否正常,执行命令:
执行完成后查看RAILS_ENV=production rails assets:precompilepublic/assets目录下是否存在rails_admin-开头的css、js文件,确认本地预编译正常后再推送到Heroku。
内容的提问来源于stack exchange,提问作者rmcsharry
相关产品推荐
相关产品推荐

