具体来说,我正在尝试将视频播放器添加到我的网络应用中..
javascript清单文件中包含:
//= require bitmovinplayer.min
//= require bitmovinplayer-core.min
//= require bitmovinplayer-controls.min
并在css清单中:
@import "bitmovinplayer-core.min";
@import "bitmovinplayer-controls.min";
在资产编译后查看连接的.js文件时,我发现这些文件已正确包含在内。
但是,在尝试实例化播放器时,我在控制台中看到404:
vendor-d8cd0ac ... .js:38 GET https://myapp.com/assets/bitmovinplayer-core.min.css
vendor-d8cd0ac ... .js:38 GET https://myapp.com/assets/bitmovinplayer-core.min.js
显然,这个播放器代码添加了带有src属性的html,这些属性指向不可访问的文件 - 因为它们在主js&从清单生成的css文件。
所以我想通过手动将这些文件添加到资产预编译数组中,这可以解决问题.............
config.assets.precompile += [
'bitmovinplayer-core.min.css',
'bitmovinplayer-core.min.js',
]
但是,在执行此操作并进行预编译后,我仍然无法访问:
/assets/bitmovinplayer-core.min.css
我必须去:
/assets/bitmovinplayer-core.min-78b88b860ccc407fd131639914ecd692.css
哪个不好..我需要能够访问此资产而不使用网址中的哈希值。
我该怎么做?
答案 0 :(得分:2)
这里的问题是,每当Rails通过资产管道预编译资产时,它会向文件附加一个哈希值以改进缓存。由于bitmovin-player希望这些文件默认以某种方式命名,因此会遇到404错误。
但是有一个配置设置允许您覆盖路径bitmovin-player将从documented here加载这些文件。
location : {
html5 : '<%= asset_path('bitmovinplayer-core.min.js') %>',
css : '<%= asset_path('MY_CSS_FOLDER/bitmovinplayer-core.min.css') %>',
flash : '/bitmovinplayer.swf',
vr : '<%= asset_path('bitmovinplayer-vr.min.js') %>',
ctrls : '<%= asset_path('MY_JS_FOLDER/bitmovinplayer-controls.min.js') %>',
ctrls_css: '<%= asset_path('MY_CSS_FOLDER/bitmovinplayer-controls.min.css') %>'
}
不幸的是,现在没有办法告诉玩家所有文件都捆绑在一起,它不应该重新加载任何js / css。因此,在此之前,您需要将每个单独的文件添加到config.assets.precompile
列表中。
如果你真的不需要使用自托管播放器,我昨天写了一个Rails gem,它使bitmovin-player的嵌入和配置变得更加容易。你可以查看on GitHub。我正在考虑为宝石添加自托管选项 - 但目前还没有时间进入宝石。 (如果删除添加到页面头部的<%= bitmovin_player_script %>
,嵌入播放器的帮助程序仍然有效。
希望这有帮助。