2016-11-17 75 views
1

具體來說,我想一個視頻播放器添加到我的web應用程序..404時導軌資產管道第三方視頻播放器

JavaScript的清單文件中有:

//= require bitmovinplayer.min                            
//= require bitmovinplayer-core.min 
//= require bitmovinplayer-controls.min 

並在CSS清單:

@import "bitmovinplayer-core.min";                               
@import "bitmovinplayer-controls.min"; 

當觀看資產編譯後的級聯.js文件,我看到那些有正常越來越包括這些文件。

但是,試圖實例化一個播放器時,有404,我在控制檯中看到:

廠商d8cd0ac ... .js文件:38 GET https://myapp.com/assets/bitmovinplayer-core.min.css

廠商d8cd0ac ... .js文件: 38 GET https://myapp.com/assets/bitmovinplayer-core.min.js

因此很明顯,這個播放器代碼添加HTML與SRC屬性是指向未accessible--,因爲他們是在主JS可用文件從清單生成的css文件。

所以我想通過手動將這些文件複製到資產預編譯陣列,這將解決這個問題.............

config.assets.precompile += [ 
    'bitmovinplayer-core.min.css', 
    'bitmovinplayer-core.min.js', 
] 

然而,這樣做的,預編譯後,我還是不能去:

/assets/bitmovinplayer-core.min.css

我必須去:

/assets/bitmovinplayer-core.min-78b88b860ccc407fd131639914ecd692.css

這是沒有好。我需要能夠無需在URL中的散列訪問此資產。

我該怎麼做?

回答

2

這裏的問題是,無論何時Rails通過資產管道預編譯資產,它都會在文件中附加散列以提高緩存。由於bitmovin-player期望這些文件在默認情況下以某種方式被命名,它將會運行到404錯誤。

然而,有一個配置設置,可以讓你覆蓋路徑bitmovin播放器將加載這些文件從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播放器變得更容易一些。你可以看看on GitHub。我正在考慮將自主託管選項添加到寶石 - 但目前沒有時間進入。 (如果你刪除了<%= bitmovin_player_script %>,那麼嵌入播放器的幫手仍然有效。

希望對你有所幫助。