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

如何在Rails 7引擎(Sprockets-Rails)中阻止TinyMCE资产编译

解决Rails 7引擎中TinyMCE无指纹资产部署问题

步骤1:配置Sprockets排除TinyMCE资产的指纹编译

在引擎的config/initializers/assets.rb中添加以下配置:

# 预编译TinyMCE所有子文件夹内的资产
Rails.application.config.assets.precompile += Dir["#{__dir__}/../../app/assets/tinymce/**/*"].map do |file_path|
  file_path.gsub("#{__dir__}/../../app/assets/", "")
end

# 排除TinyMCE目录下所有文件的指纹哈希
Rails.application.config.assets.exclude_from_fingerprinting += %r{tinymce/.*}

通过正则匹配tinymce下的所有资源,确保编译时不会给这些文件添加指纹后缀。

在引擎的清单文件(如app/assets/javascripts/application.js)中维持原有配置:

//= link_tree ../javascripts/tinymce

该配置会让Sprockets将tinymce目录下的所有文件(含子文件夹)完整复制到生产环境的public/assets目录,结合步骤1的设置,这些文件不会被添加指纹。

步骤3:初始化TinyMCE时指定base_url

在TinyMCE的初始化代码中,必须指定base_url指向无指纹的资源根目录,确保它能正确加载子文件夹中的语言包、插件、样式等资源:

tinymce.init({
  base_url: '<%= asset_path("tinymce") %>',
  // 其他TinyMCE配置项
});

asset_path("tinymce")会生成正确的无指纹路径(如/assets/tinymce),让TinyMCE能准确找到所有依赖文件。

验证配置

执行rails assets:precompile后,检查public/assets/tinymce目录:

  • 所有子文件夹(如langs、plugins、skins)应完整复制
  • 所有文件无指纹哈希后缀(如tinymce.min.js而非tinymce.min-abc123.js)

此方案完全通过Sprockets原生配置实现需求,无需依赖第三方gem、云托管或额外部署脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:22:42