2013-11-19 2 views
1

Я использую Adobe Edge с Rails и получаю 404s на моем рабочем сервере для некоторых файлов Javascript (все отлично работает на сервере разработки).Rails Javascript 404s in production (конвейент активов)

Это мои файлы JavaScript

application.js 
edge.1.5.0.min.js 
ink-falling_edge.js.erb 
ink-falling_edgeActions.js 
ink-falling_edgePreload.js.erb 

в application.js

//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
//= require_tree . 

edge.1.5.0.min.js, ink-falling_edge.js.erb и ink-falling_edgeActions.js не удается загрузить. Предполагается, что они динамически загружаются ink-falling_edgePreload.js.erb.

В ink-falling_edgePreload.js.erb у меня есть:

function loadResources(a,d) { 
    AdobeEdge.preload = AdobeEdge.preload || []; 
    AdobeEdge.preload.q = AdobeEdge.preload.q || []; 
    d || !isCapable() ? filesToLoad = a : AdobeEdge.preload.busy ? AdobeEdge.preload.q.push({files:a, callback:edgeCallback}) : AdobeEdge.requestResources(a,edgeCallback) 
} 

aLoader = [ 
    { load: "<%= asset_path('edge.1.5.0.min.js') %>" }, 
     { load: "<%= asset_path('ink-falling_edge.js.erb') %>" }, 
     { load: "<%= asset_path('ink-falling_edgeActions.js') %>" }]; 

doDelayLoad=false; 

loadResources(aLoader, doDelayLoad); 

Я только модифицирована aLoader использовать asset_path, остальное генерируется Adobe Пограничный код.

Когда я загружаю свою страницу. Я получаю это в консоли Javascript:

GET http://.../assets/ink-falling_edge-deca9b287a7502bef69078b737f58a0b.js 404 (Not Found) application-419438724fb62a953134d8263f3f4882.js:8 
GET http://.../assets/ink-falling_edgeActions-9bdaa1845a29b15bd2562058432de721.js 404 (Not Found) application-419438724fb62a953134d8263f3f4882.js:8 
GET http://.../assets/edge.1.5.0.min-610ab04bb1d4d0ad9a2a845821f04bdf.js 404 (Not Found) application-419438724fb62a953134d8263f3f4882.js:8 
GET http://.../assets/edge.1.5.0.min-610ab04bb1d4d0ad9a2a845821f04bdf.js 404 (Not Found) application-419438724fb62a953134d8263f3f4882.js:8 
GET http://.../assets/ink-falling_edge-deca9b287a7502bef69078b737f58a0b.js 404 (Not Found) application-419438724fb62a953134d8263f3f4882.js:8 
GET http://.../assets/ink-falling_edgeActions-9bdaa1845a29b15bd2562058432de721.js 404 (Not Found) application-419438724fb62a953134d8263f3f4882.js:8 

Если я закомментируйте динамическую загрузку части, анимация Adobe Гурт не работает.

Есть ли что-то, что я делаю неправильно, ссылаясь на эти файлы Javascript, вызывающие 404?

Спасибо!

ответ

2

Не могу сказать точно, но я подозреваю, что вы не обновили приложение application.rb, чтобы прекомпилировать эти файлы как автономные JS.

В файл config.assets.precompile в приложении application.rb должен быть добавлен любой файл Javascript или CSS, который вам нужен для прямого доступа (который выполняет сценарий загрузки). Таким образом, вам нужно добавить строку строки следующим образом:

config.assets.precompile += %w[edge.1.5.0.min.js ink-falling_edge.js ink-falling_edgeActions.js] 

По умолчанию файлов JavaScript не прекомпилирован в активы, выставленных на URL-адреса - они просто рассыпались и прикладным .js и других контроллеры конкретных JS файлов, которые используют манифесты , Если вы хотите получить доступ к URL-адресу напрямую, вам нужно добавить его в этот список.

Смежные вопросы