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
Ответы
Ответ 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...