Nano Hash - криптовалюты, майнинг, программирование

Ресурсы 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's 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

  • попробуй rake assets:clean. разработка может по-прежнему обслуживать application.js, но в ней не должно быть всех других файлов js. 03.12.2011
  • Не забудьте очистить кеш браузера после удаления ресурсов в public/assets. 30.09.2012

Ответы:


1

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

config.serve_static_assets = false

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

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

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

03.12.2011
  • Он по-прежнему добавляет application.js, но теперь он пуст. Спасибо! 05.12.2011
  • Наблюдаю ту же проблему на rails 3.2, и это исправление не работает для меня. В public/assets тоже ничего нет, так как это совершенно новый проект, и я еще не запускал rake assets:precompile. Любая идея, как это исправить? Я должен работать с config.assets.debug = false в режиме разработки, чтобы мой javascript работал правильно, и это становится раздражающим! 23.02.2012
  • Хм, интересно... это решение, похоже, работает с приложением, но только после того, как я впервые запустил rake assets:precompile. Заставляет задуматься, почему он игнорирует строку config.assets.compile = false. 24.02.2012
  • У меня та же проблема, что и у @Batkins в приложении Rails 3.2. Когда config.assets.debug = true, application.js содержит упакованную конкатенированную версию. Если я отключу отладку, это исчезнет, ​​и application.js просто содержит все ресурсы вместе (но не упакованные и читабельные). 06.03.2012
  • @BenScheirman - я сообщил об об этом как об ошибке в системе отслеживания проблем github. Кто-то отправил запрос на включение исправления, но он еще не принят. Надеюсь, это будет скоро. Не стесняйтесь ставить +1. 06.03.2012
  • Обратите внимание, пользователи Rails3.2: после установки config.assets.compile = false вы также должны запустить bundle exec rake assets:precompile. тогда это сработает. 15.03.2012
  • Я столкнулся с той же проблемой, что и @Batkins (Rails 3.2), и оказалось, что проблема была в кеше браузера (поскольку я новичок в Mac, я не использовал команду + shift + R) 11.07.2012
  • Этот параметр фактически относится ко всем public/ и предшествует конвейеру ресурсов. guides.rubyonrails.org/configuring.html 04.05.2013

  • 2

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

    03.07.2012
  • Очистка кеша браузера в Chrome решила эту проблему для меня. Спасибо! 28.11.2012

  • 3

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

    config.serve_static_assets = false
    

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

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

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

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

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

    06.07.2012
  • Я думаю, что редактирование app/assets/application.js необходимо, чтобы браузер перезагрузил его (в противном случае получает 304). Вы также можете просто очистить кеш браузера после удаления public/assets. 30.09.2012
  • Это конкретное решение сработало для меня. Спасибо. Конвейер ассетов классный, но хрупкий. Далеко не под ключ, но мы доберемся до этого. 14.11.2012
  • Редактирование application.js было шагом, который я пропустил - спасибо! 19.03.2013

  • 4

    Я был сбит с толку этим (еще раз), - не забудьте добавить ПУСТУЮ СТРОКУ после всех ваших //= require директив в конце вашего application.js !

    17.04.2013
  • Недавно мне пришлось перенастроить среду разработки после сбоя жесткого диска, и у меня возникла эта проблема. По какой-то причине добавление еще одной новой строки в конце последней директивы исправило это. 23.05.2013
  • В моем application.js уже была пустая строка, но, как и в @zarazan выше, добавление второй пустой строки в конце исправило ее. Я пока не могу определить, почему. 03.08.2013
  • Это безумие. Я добавил белую строку, и проблема была исправлена. Я удалил линию... и теперь она продолжает работать...... 30.10.2013

  • 5

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

    Вот из документации:

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

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

    Может быть, вы можете найти подобное решение с javascript...

    08.02.2015
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..