Подтвердить что ты не робот

Rails 3.1 Активы - странное обслуживание в разработке

У меня проблема с конвейером Rails 3.1. Активы включаются дважды в разработку:

<script src="/assets/main_new.js?body=1" type="text/javascript"></script>
<script src="/assets/pagenav.js?body=1" type="text/javascript"></script>
<script src="/assets/tours.controller.js?body=1" type="text/javascript"></script>
<script src="/assets/tours.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>

Rails как-то компилируется и включает application.js, поэтому все скрипты включаются дважды - как отдельный файл и в application.js

Все отлично с предварительно скомпилированными активами в производстве.

development.rb

 config.assets.compress = false
 config.assets.debug = true

production.rb

# Disable Rails static asset server (Apache or nginx will already do this)
config.serve_static_assets = false

# Compress both stylesheets and JavaScripts
config.assets.compress = true
config.assets.js_compressor  = :uglifier
config.assets.css_compressor = :scss

config.assets.compile = false
config.assets.digest = true

application.rb

config.assets.enabled = true
4b9b3361

Ответ 1

Попробуйте добавить следующее в development.rb:

config.serve_static_assets = false

... и затем очистить кеш браузера (обновление на основе комментариев)

Статические активы относятся к предварительно скомпилированным активам в public/assets, где rake assets:precompile помещает их.

Что происходит, так это то, что все, что существует в public/assets, переопределит что-либо в приложении/активах, если вы их обслуживаете. Таким образом, public/assets/application.js загружается, когда тег js намеревается идентифицировать app/assets/application.js.

Ответ 2

Как только вы избавитесь от /public/assets, вы также должны очистить кеш браузера.

Ответ 3

Это просто вызвало у меня проблему. Установка следующего приложения заставляет приложение работать, но включает в себя единственный файл application.js - который я не хочу в разработке:

config.serve_static_assets = false

Ранее я предварительно скомпилировал свои активы (кажется, причина).

Чтобы исправить это, я сделал следующее:

  • Удалите директорию public/assets, добавленную ранее добавленную компиляцию.
  • Запустите RAILS_ENV=development rake assets:clean, чтобы удалить tmp/assets.
  • Отредактированное приложение /assets/application.js

Только после того, как я отредактировал application.js, он ошибся, а затем исправил его, что applciation.js, включенный в страницы, был не полным, прекомпилированным application.js.

Я не уверен, что все это нужно сделать. Я также снова начал свой сервер.

Ответ 4

Сработало это (еще раз), - не забудьте добавить BLANK LINE после всех ваших директив //= require в конце вашего application.js!

Ответ 5

Я добавляю ту же проблему с меньшим количеством файлов.

Здесь из документации:

В режиме разработки активы передаются в виде отдельных файлов в порядке они указаны в файле манифеста.

Мое решение состояло в том, чтобы удалить строку *= require_tree . из application.css.less и использовать @import "my-styles"; меньше.

Возможно, вы найдете аналогичное решение с javascript...