rails webpacker live-reload views

webpacker дает возможность использовать webpack и webpack-dev-server вместе с Rails. webpacker отлично интегрирован с Rails и имеет все необходимые настройки для быстрого старта с основными популярными технологиями, такими как React или Vue.

При разработке мы можем использовать все преимущества webpack. При этом webpacker сосуществует совместно с assets pipeline, не отменять стандартной логики Rails. Основная цель webpacker предоставить возможность работы с javascript в логике js-приложений. Картинки, стили и отдельные скрипты могут продолжать находиться в app/assets/*.

Тем не менее можно полностью отказаться от классического конвейера  ресурсов Rais и полностью перенести все ресурсы, включая изображения, шрифты и стили в логику webpacker.

Как мы знаем webpack строит граф зависимостей от entrypoint и отслеживает изменения в файлах.

Как сделать чтобы при изменениях в app/views/**/*.html.{erb,slim} браузер также перезагружался. Будем отслеживать файлы и отправлять уведомления серверу через socket.

Добавим код в config/webpack/development.js

const chokidar = require('chokidar')
environment.config.devServer.before = (app, server) => {
  chokidar.watch([
    'config/locales/*.yml',
    'app/views/**/*.slim',
    'app/views/**/*.erb'  
  ]).on('chnage', () => server.sockWrite(server.sockets, 'content-changed'))
}