在中间人中为视频启用资产管道
Posted
技术标签:
【中文标题】在中间人中为视频启用资产管道【英文标题】:Enabling asset pipeline for videos in middleman 【发布时间】:2022-01-21 12:57:11 【问题描述】:在我的中间人静态站点中,我的图像、字体和 CSS 正在正确地通过资产管道,并获得它们的指纹后缀(例如 img/logo-3e4a3149.png
)。
但是,位于 assets/vid
文件夹中的我的 mp4 文件只是以相同的名称复制,这使得它们在构建和部署时过时(缓存明智)。
在这方面,如何将其他资产类型 (mp4) 配置为像图像一样对待?
【问题讨论】:
【参考方案1】:好吧,回答我自己的问题,虽然我不确定这是开发人员想要的方法。
-
找到了
AssetHash
扩展的源代码,提供了一些见解。
发现似乎过时的 configuration documentation 恰好提到了 asset_hash
设置(尽管提到的语法不起作用)。
所以在摆弄它之后,我在我的config.rb
中想出了这个
activate :asset_hash # this was always there
config.asset_extensions << ".mp4"
看起来有点脏,因为中间人配置中的所有其他设置都是使用set :something
DSL 优雅地设置的,但至少它有效。
我还注意到这种语法有效:
activate :asset_hash, exts: [".mp4"]
但它会替换出厂设置。
如果有人找到更好的选择,请分享。
【讨论】:
【参考方案2】:默认情况下,文件扩展名“.mp4”不被视为资产文件,即不在asset_extensions
中列出。
将文件扩展名添加到列表可以解决问题(正如您自己已经弄清楚的那样)。
这样做的选项:
config[:asset_extensions] += %w[.mp4]
# or
config.asset_extensions += %w[.mp4]
# or
activate :asset_hash do |asset_hash|
asset_hash.exts += %w[.mp4]
end
# or
# Passing `ext:` argument overrides list of file extensions!
activate :asset_hash, exts: %w[.css .png .jpg .jpeg .webp .svg .svgz .js .gif .ttf .otf .woff .woff2 .eot .ico .map .mp4]
【讨论】:
如果只添加一个元素,则可以通过推送<< '.mp4'
替换数组串联+= %w[.mp4]
。以上是关于在中间人中为视频启用资产管道的主要内容,如果未能解决你的问题,请参考以下文章