ruby-on-rails 处理来自宝石的图像资产的链轮

c0vxltue  于 2023-02-17  发布在  Ruby
关注(0)|答案(1)|浏览(180)

我正在从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的方法自动完成此操作?

polkgigr

polkgigr1#

Sprockets v4不再自动包含gem资源。
要在资产中包含gem资源,必须显式注册包含资源的gem路径。这可以使用以下配置来完成:config/application.rb文件中的config.assets.paths
例如,要在资产中包含mediaelement_rails gem映像资源,可以将以下内容添加到config/application.rb文件中:

config.assets.paths << Rails.root.join('vendor', 'assets', 'mediaelement_rails', 'images')

这会将vendor/assets/mediaelement_rails/images目录添加到assets路径中。
如果您使用的gem不遵循其资源的标准命名约定(即,将资源放在以javascript、样式表或图像命名的子目录中),则需要使用config/application.rb文件中的config.assets.precompile设置显式注册这些目录。
Here他们讨论了插入不遵循模式的路径
Here,rails文档也已经介绍了这方面的内容

相关问题