Почему ActionCable не работает в производстве? - PullRequest
0 голосов
/ 11 апреля 2020

Я реализовал ActionCable для обновления представления (erb) для определенных действий. Все это прекрасно работает при постановке, но не в производстве.

my cable.yml

development:
  adapter: redis
  url: redis://localhost:6379
#
test:
  adapter: redis
  url: redis://localhost:6379
#
production:
  adapter: redis
  url: redis://localhost:6379

Поскольку вы не видите настройки для постановки, так как она использует адаптер asyn c, и это работает без проблем. Для производства с использованием Redis и это создает проблемы

Представление клиента отображается на терминалах внутри магазина, а HTML .erb выглядит так

Normal HTML to render and at the bottom
<script type="text/javascript">
    App.messages = App.cable.subscriptions.create('TvNotificationsChannel', {
        received: function (data) {

            if (data['tv'] == <%= @tv.pincode %>) {
                play_sound();
                setTimeout(function(){
                    location.reload(true);
                    }, 1500);
            }
        }
    });
</script>

, так что если широковещательное сообщение равно TV.Pincode воспроизводит звук и перезагружает экран. Снова работаем без проблем при постановке, но в производственной среде мы иногда получаем эту ошибку

App not defined in content

В соответствии с документацией мы должны использовать redis в производственной среде, но кажется, что работает адаптер asyn c (промежуточная конфигурация).

Любые советы / советы приветствуются, как решить эту проблему.

...