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

Rails 5.1.7预发布环境报Sprockets资产未找到错误求助

Rails 5.1.7预发布环境资产找不到问题排查方案

1. 先处理资产预编译的核心问题

你的staging环境里config.assets.compile = false,这意味着Rails不会在请求时动态编译资产,必须提前完成预编译,且所有用到的资产都得加入预编译列表:

  • 执行预编译命令:
    RAILS_ENV=staging rake assets:precompile
    
  • 打开config/initializers/assets.rb,把Font Awesome的文件加入预编译列表:
    Rails.application.config.assets.precompile += %w( fontawesome-free-5.1.1-web/css/all.min.css )
    # 字体文件也要加上,不然会出现字体加载失败:
    # Rails.application.config.assets.precompile += %w( *.woff *.woff2 *.ttf *.eot *.svg )
    

2. 修正资产放置路径与引用方式

正确放置文件夹

把fontawesome-free-5.1.1-web文件夹放到vendor/assets/stylesheets下,最终路径应该是:
vendor/assets/stylesheets/fontawesome-free-5.1.1-web/css/all.min.css

视图里用资产助手引用

不要直接写硬编码路径,用Rails的资产助手方法:

<%= stylesheet_link_tag 'fontawesome-free-5.1.1-web/css/all.min', media: 'all' %>

注意别带.css后缀,助手会自动处理。

3. 调整staging环境的资产配置

你的staging配置里config.assets.debug = true,预发布环境建议关掉这个,debug模式会拆分资产文件,容易引发路径问题:

config.assets.debug = false

另外显式开启资产哈希(默认预发布环境是开的,但确认下更稳妥):

config.assets.digest = true

4. 清理缓存并重启服务器

  • 清理旧的资产缓存:
    RAILS_ENV=staging rake assets:clean
    
  • 重启staging服务器:
    rails s -e staging
    

额外检查项

  • 确认Font Awesome文件夹里的所有字体文件(woff、woff2等)都加入了预编译列表,不然页面会加载出图标占位符。
  • 如果是通过npm安装的Font Awesome,建议直接复制dist目录到资产文件夹,不要带多余的文件,减少路径混乱。

内容的提问来源于stack exchange,提问作者opensource-developer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:48:10