2015-02-26 2 views
0

Я не уверен, что в рельсах 4.2 есть настройка, которая изменилась с 4.1, или если я просто сумасшедший соус. Но это мой файл application.js:Почему мои активы не загружаются так, как я хочу, чтобы они были - режим разработки. rails 4.2

// This is a manifest file that'll be compiled into application.js, which will include all the files 
// listed below. 
// 
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. 
// 
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 
// compiled file. 
// 
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details 
// about supported directives. 
// 
//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
//= require_tree . 
//= require bootstrap 
//= require react 
//= require react_ujs 
//= require backbone 

//= require app 
//= require app/helpers/core.js 
//= require app/collections/aisis_writer_user 
//= require app/routers/aisis_writer_panel 
//= require app/views/aisis_writer_panel 

В нем четко указано, как именно мои активы должны быть загружены. Есть пара этих файлов, у которых есть собственные требования, в верхней части. Теперь в режиме разработки, из того, как я вижу вещи, я не получаю гигантский конкатенированный файл активов, вместо этого каждый актив загружается как тег сценария в заголовок страницы. Это было бы хорошо, если бы он следовал порядку, который я изложил.

<script src="/assets/jquery.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/jquery_ujs.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/turbolinks.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/app/helpers/intervals.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/app/helpers/reset_intervals.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/app/routers/aisis_writer_panel.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/app.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/app/collections/aisis_writer_user.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/app/helpers/core.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/app/views/aisis_writer_panel.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/app/helpers/polling.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/bootstrap.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/react.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/react_ujs.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/backbone.js?body=1" data-turbolinks-track="true"></script> 
<script src="/assets/application.js?body=1" data-turbolinks-track="true"></script> 

Это не так, как я определил вещи, которые можно заказать на всех, в результате я получаю:

uncaught ReferenceError: App is not defined 
aisis_writer_user.js:1 Uncaught ReferenceError: Backbone is not defined 
aisis_writer_panel.js:1 Uncaught ReferenceError: Backbone is not defined 
backbone.js:219 Uncaught TypeError: Cannot read property 'each' of undefined 

То, как я заказал вещи, эти ошибки не должны - или, по крайней мере, не все они - появляться.

Так что мой вопрос: Почему инфраструктура не учитывает меня, когда я говорю, что она загружает файлы определенным образом?

ответ

1

Почему трубопровод активов, игнорируя меня, когда я говорю это, чтобы загрузить файлы определенным образом?

Это не так, это именно то, о чем вы просили. Вы игнорируете большой require_tree . в середине ваших require утверждений.

Весь смысл require_tree . заключается в том, что он рекурсивно включает в себя все файлы, которые он находит в каталоге, который вы ему даете. Вы даете это ., так что в этом случае вы будете сбрасывать каждый файл .js или .coffee в свой каталог app/assets/javascripts в ваш манифест, в любом порядке, когда они будут считаны с диска.

Если вы не хотели этого поведения, вам нужно удалить эту строку.

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