我正在从sprocket 3迁移到sprocket 4,v4似乎忽略了gems的资源,这些都是由v3自动处理的,但是我似乎找不到任何关于移植这种行为的东西。
例如,gem mediaelement_rails
包含mediaelement_rails-0.8.2/app/assets/images/mediaelement_rails/skipback.png
在sprockets v3中,它在资源编译期间自动包含,但现在,即使使用manifest:
//= require mediaelement_rails
//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css
不包括skipback.png
。
我可以非常明确地说:查询gem路径并将其添加到资产路径中。但是是否有类似于v3的方法自动完成此操作?
1条答案
按热度按时间polkgigr1#
Sprockets v4不再自动包含gem资源。
要在资产中包含gem资源,必须显式注册包含资源的gem路径。这可以使用以下配置来完成:
config/application.rb
文件中的config.assets.paths
。例如,要在资产中包含mediaelement_rails gem映像资源,可以将以下内容添加到config/application.rb文件中:
这会将
vendor/assets/mediaelement_rails/images
目录添加到assets路径中。如果您使用的gem不遵循其资源的标准命名约定(即,将资源放在以javascript、样式表或图像命名的子目录中),则需要使用config/application.rb文件中的config.assets.precompile设置显式注册这些目录。
Here他们讨论了插入不遵循模式的路径
Here,rails文档也已经介绍了这方面的内容