Задать вопрос
@arruah

Как узнать причину почему Ruby on Rails не подгружает стили?

Я пытаюсь упаковать RoR проект в докер при помощи docker-compose. Проект запускается но не подгружаются стили. В логах вот это:
I, [2019-01-13T05:25:34.400480 #1]  INFO -- : Started GET "/body/list/all" for 172.23.0.1 at 2019-01-13 05:25:34 +0000
I, [2019-01-13T05:25:34.406057 #1]  INFO -- : Processing by PublicBodyController#list as HTML
I, [2019-01-13T05:25:34.481372 #1]  INFO -- :   Rendered public_body/_body_listing.html.erb (1.2ms)
I, [2019-01-13T05:25:34.485731 #1]  INFO -- :   Rendered public_body/_alphabet.html.erb (3.5ms)
I, [2019-01-13T05:25:34.493234 #1]  INFO -- :   Rendered public_body/_list_sidebar_extra.html.erb (1.0ms)
I, [2019-01-13T05:25:34.493418 #1]  INFO -- :   Rendered public_body/list.html.erb within layouts/default (14.5ms)
I, [2019-01-13T05:25:34.494712 #1]  INFO -- :   Rendered layouts/_favicon.html.erb (0.4ms)
I, [2019-01-13T05:25:34.496835 #1]  INFO -- :   Rendered general/_responsive_stylesheets.html.erb (0.8ms)
I, [2019-01-13T05:25:34.497232 #1]  INFO -- :   Rendered general/_stylesheet_includes.html.erb (1.9ms)
I, [2019-01-13T05:25:34.498290 #1]  INFO -- :   Rendered general/_opengraph_tags.html.erb (0.4ms)
I, [2019-01-13T05:25:34.499673 #1]  INFO -- :   Rendered lib/themes/alavetelitheme/lib/views/general/_before_head_end.html.erb (0.6ms)
I, [2019-01-13T05:25:34.510512 #1]  INFO -- :   Rendered general/_locale_switcher.html.erb (0.2ms)
I, [2019-01-13T05:25:34.511186 #1]  INFO -- :   Rendered general/_log_in_bar.html.erb (0.3ms)
I, [2019-01-13T05:25:34.523354 #1]  INFO -- :   Rendered general/_nav_items.html.erb (0.9ms)
I, [2019-01-13T05:25:34.523524 #1]  INFO -- :   Rendered general/_responsive_topnav.html.erb (11.7ms)
I, [2019-01-13T05:25:34.523657 #1]  INFO -- :   Rendered general/_responsive_header.html.erb (14.2ms)
I, [2019-01-13T05:25:34.525045 #1]  INFO -- :   Rendered general/_responsive_credits.html.erb (0.2ms)
I, [2019-01-13T05:25:34.529978 #1]  INFO -- :   Rendered general/_responsive_footer.html.erb (5.7ms)
I, [2019-01-13T05:25:34.531204 #1]  INFO -- :   Rendered lib/themes/alavetelitheme/lib/views/general/_before_body_end.html.erb (0.5ms)
I, [2019-01-13T05:25:34.531496 #1]  INFO -- : Completed 200 OK in 125ms (Views: 37.4ms | ActiveRecord: 66.1ms)
I, [2019-01-13T05:25:34.546144 #1]  INFO -- : Started GET "/stylesheets/responsive/application.css" for 172.23.0.1 at 2019-01-13 05:25:34 +0000
I, [2019-01-13T05:25:34.551177 #1]  INFO -- : Processing by GeneralController#not_found as CSS
I, [2019-01-13T05:25:34.551243 #1]  INFO -- :   Parameters: {"path"=>"stylesheets/responsive/application"}
I, [2019-01-13T05:25:34.552297 #1]  INFO -- : Completed 404 Not Found in 1ms (ActiveRecord: 0.0ms)
I, [2019-01-13T05:25:34.554729 #1]  INFO -- : Started GET "/javascripts/application.js" for 172.23.0.1 at 2019-01-13 05:25:34 +0000
I, [2019-01-13T05:25:34.559508 #1]  INFO -- : Processing by GeneralController#not_found as JS
I, [2019-01-13T05:25:34.559613 #1]  INFO -- :   Parameters: {"path"=>"javascripts/application"}
I, [2019-01-13T05:25:34.560663 #1]  INFO -- : Completed 404 Not Found in 1ms (ActiveRecord: 0.0ms)
I, [2019-01-13T05:25:34.563017 #1]  INFO -- : Started GET "/stylesheets/responsive/print.css" for 172.23.0.1 at 2019-01-13 05:25:34 +0000
I, [2019-01-13T05:25:34.567878 #1]  INFO -- : Processing by GeneralController#not_found as CSS
I, [2019-01-13T05:25:34.567976 #1]  INFO -- :   Parameters: {"path"=>"stylesheets/responsive/print"}
I, [2019-01-13T05:25:34.569313 #1]  INFO -- : Completed 404 Not Found in 1ms (ActiveRecord: 0.0ms)
I, [2019-01-13T05:25:34.593278 #1]  INFO -- : Started GET "/images/favicon.ico" for 172.23.0.1 at 2019-01-13 05:25:34 +0000
I, [2019-01-13T05:25:34.597898 #1]  INFO -- : Processing by GeneralController#not_found as 
I, [2019-01-13T05:25:34.597971 #1]  INFO -- :   Parameters: {"path"=>"images/favicon"}
I, [2019-01-13T05:25:34.598964 #1]  INFO -- : Completed 404 Not Found in 1ms (ActiveRecord: 0.0ms)

Хотя файлы там на которые он жалуется присутствуют.
Если я разворачиваю при помощи vagrant этот же проект, то всё нормально работает.
  • Вопрос задан
  • 280 просмотров
Подписаться 2 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 4
2ord
@2ord
Нужно выполнить прекомпиляцию assets,
затем обновить страницу при помощи Ctrl-F5, чтобы подхватил пути новых файлов стилей. Можно также перезапустить браузер. В DevTools в закладке Network нужно понаблюдать по каким путям идёт обращение к стилям.
Вообще, сложно гадать без кода. Если не поможет вышеназванное, то предположу что дело в файле Gemfile или инициализации фреймворка.
Ответ написан
c3gdlk
@c3gdlk
Ментор в http://rubyboost.ru/
У Вас vargrant скорее всего настроен для девелопмента, а в докере пытаетесь запустить в продакшене. Руби медленный для раздлачи ассетов, поэтому рельса по умолчанию в продакшене их не раздает, расчитывая что это будет делать нгинкс.

Поэтому нужно либо добавить нгинкс в докер, либо установить serve_static_assets = true в production.rb

Кроме того нужно убедиться, что все ассеты компилируются, те которые нет добавить в assets.rb в инишиалайзерах
Ответ написан
AdilA
@AdilA
Нравится кодить, изучаю go c echo
Попробуйте старым дедовским методом capistrano nginx во первых вы поймете как это все работает, потом упакуете в docker. Или не парьтесь и найдите DevOps.
habrahabr.ru/post/240025 в помощь, мне в свое время очень помогла.
Ответ написан
Комментировать
@vsuhachev
Можно использовал 2 варианта:

Первый: компилить ассеты перед сборкой образа и паковать `public/assets` в образ. А затем эту папку как volume цеплять в контейнер к nginx и писать соответствующий конфиг для nginx

Второй: компилить ассеты в контейнере (включать servse_static_assets в рельсах) и настроить кэширование для ассетов на стороне веб-сервера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы