@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 этот же проект, то всё нормально работает.
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 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
Попробуйте старым дедовским методом capistrano nginx во первых вы поймете как это все работает, потом упакуете в docker. Или не парьтесь и найдите DevOps.
habrahabr.ru/post/240025 в помощь, мне в свое время очень помогла.
Ответ написан
@vsuhachev
Можно использовал 2 варианта:

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

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

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

Войти через центр авторизации
Похожие вопросы
PiRL Ventures Москва
До 180 000 руб.
Kernel Web Новосибирск
от 80 000 руб.
Instamart Москва
До 220 000 руб.
21 апр. 2019, в 19:08
75000 руб./за проект
21 апр. 2019, в 18:14
500 руб./за проект
21 апр. 2019, в 15:25
50000 руб./за проект