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

Ruby3+Rails7+Sprockets V4:外部Gem清单文件资源引入问题

解决Rails引擎Gem中Sprockets V4 CSS资源编译问题

引擎Gem端配置

  1. 调整清单文件结构(推荐CSS清单)
    替换原JS清单为CSS清单,更贴合资源类型:

    • 在Gem的app/assets/stylesheets/下创建my_gem_manifest.css,内容:
      /*
       *= require_tree ./my_gem
       */
      

    该配置会自动引入my_gem子目录下所有CSS文件。

  2. 引擎初始化配置
    在lib/my_gem/engine.rb中添加Sprockets资源注册逻辑:

    module MyGem
      class Engine < ::Rails::Engine
        initializer "my_gem.register_assets" do |app|
          # 将Gem的stylesheets目录加入Sprockets资源路径
          app.config.assets.paths << root.join("app", "assets", "stylesheets")
          # 注册Gem的清单文件为预编译目标
          app.config.assets.precompile += %w( my_gem_manifest.css )
        end
      end
    end
    

主应用端配置

  1. 引入Gem清单
    在主应用的app/assets/stylesheets/application.css中添加引用:

    /*
     *= require my_gem_manifest
     */
    
  2. 确保Sprockets启用
    确认主应用的config/application.rb中加载了Sprockets:

    require "sprockets/railtie"
    

    若主应用默认使用Propshaft,需在config/assets.rb中切换回Sprockets:

    Rails.application.config.assets.compile = true
    Rails.application.config.assets.enabled = true
    

排查要点

  • 执行bundle install确保Gem已正确安装,重启主应用服务器(配置修改需重启生效)
  • 运行rails assets:precompile查看编译日志,根据报错定位路径或语法问题
  • 核对Gem目录结构:app/assets/stylesheets/my_gem/下的CSS文件必须存在,清单文件路径无误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:52:11