Каждый раз, когда я запускаю свое приложение Rails локально, ни один из CSS не отображается. Отладчик в браузере показывает запрос get для всех файлов ресурсов с отпечатками пальцев, но все они терпят неудачу, поскольку файлы не могут быть найдены. Вот как выглядит один из этих запросов:

GET http://localhost:3000/assets/announcements.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css?body=1

В консоли сервера Rails я получаю сообщение об ошибке Rack App, а также NoMethodError для undefined method 'Silence'. Вот как выглядит одна из этих ошибок:

2017-01-08 17:24:49 -0800: Rack app error handling request { GET /assets/normalize.self-cadbbf81015902777c37852b3ea54398335fd421c6c76891c077ec5954211bb4.css }

NoMethodError: undefined method 'silence' for #<Logger:0x007fe1062c1c78

Оба журнала ошибок (консоль браузера и консоль сервера Localhost) содержат несколько версий одной и той же ошибки, все они указывают на активы (* .js и * .css).

Я просмотрел бесчисленное количество сообщений StackOverflow, но безрезультатно. Это тоже по какой-то причине влияет только на это приложение; все мои другие приложения Rails работают нормально. Вот мои характеристики:

Версия Rails: 5.0.1

Версия Ruby: 2.3.1p112

Вещи, которые я пробовал:

Директивы assets:clean, assets:precompile, rm -rf /tmp и /public/assets, все предыдущие добавлялись к среде разработки, повторному клонированию репозитория из github и установке пакета.

4
Alex Peña 9 Янв 2017 в 04:41

3 ответа

Похоже, вы столкнулись с этой проблемой: https://github.com/rails / sprockets-rails / issues / 376.

Если вы внесли это изменение в конфигурацию, вместо этого следует использовать ActiveSupport::Logger. Если у вас есть Logger.new, используйте вместо него ActiveSupport::Logger.

2
Ryan Bigg 9 Янв 2017 в 04:48
Вы хотите заменить экземпляры Logger.new на ActiveSupport::Logger? Если да, то в моем файле development.rb нет экземпляров Logger.new. Моя проблема, похоже, совпадает с той, с которой вы связались, но я не могу найти там решение.
 – 
Alex Peña
9 Янв 2017 в 05:57

Check The Sprockets 4 Manifest in rails 5

http://eileencodes.com/posts/the-sprockets-4-manifest/

Это может тебе помочь.

-1
puneet18 9 Янв 2017 в 14:09

Я знаю, что это старый вопрос, но наткнулся на него, пытаясь исправить ту же проблему.

Я нашел, а также ответ Райана Бигга, мне нужно было закомментировать следующую строку в development.rb, чтобы предотвратить бомбардировку Sprockets в Rails 5.2.2:

  # Suppress logger output for asset requests.
  # config.assets.quiet = true
4
cpt_peter 1 Авг 2019 в 20:57
Ага. Это решило это для меня. Спасибо!
 – 
Daniel Cannon
23 Май 2022 в 23:59