Rails:从 gem 中添加资产以清单

问题描述 投票:0回答:2

有没有办法从 gem 中将资源 (JS) 添加到清单中,并在清单文件中显式引用它们?

资产位于正确的位置并且拾取得很好,但我想绕过要求用户手动添加,例如

//= require 'my_asset_path'

他们的清单文件。

我也想避免使用这里描述的方法,因为它看起来有点脆弱: http://bibwild.wordpress.com/2011/09/20/design-for-include-rails-engine-assets-into-pipeline-manifest/

ruby-on-rails rubygems asset-pipeline
2个回答
1
投票

因为 Sprockets 被设计为(主要)作为生产的编译时操作,唯一可用的方法是通过生成器将资产路径写入清单。

正如您所指出的,这会很脆弱,因为您无法猜测插件相对于 javascript 清单中的其他 require 指令应该去哪里。当相当多的人使用辅助清单进行管理时,您必须假设正在使用应用程序清单。

提供有关在何处添加插件和可能的交互的良好文档可能是最好的方法。


0
投票

对于那些正在使用 Sprockets 4 的人来说,这现在是可能的。根据文档(链接):

如果您正在安装提供自己资产的 Rails 引擎, 检查他们是否定义了自己的

manifest.js
文件。那个文件 也可以使用
link
指令进行链接:

// app/assets/config/manifest.js 
//= link my_engine

// my_engine/app/assets/config/my_engine.js
//= link_directory ../stylesheets/my_engine .css 

此示例将指示 Sprockets 包含清单文件 发动机

my_engine
;由于该清单使用
link_directory
,因此 CSS 文件位于
my_engine/app/assets/stylesheets/my_engine/overrides.css
将可供 Rails 使用(最重要的是,可供引擎使用) 模板)位于
my_engine/overrides

© www.soinside.com 2019 - 2024. All rights reserved.