Я думаю, что вам нужно знать не столько «Каково состояние дел», сколько «Каков канонический способ» публикации и подписки на React и Redux.
Короткий ответ: если у вас достаточно сложное приложение, вы должны организовать свой магазин таким образом, чтобы состояние приложения было разделено на срезов и использовать шаблон контейнера для разделения ответственность за публикацию и подписку. Таким образом вы избежите упомянутой проблемы, когда вы не знаете, что в кодовой базе меняет хранилище и что реагирует на изменения. Вы можете посмотреть на компонент контейнера и посмотреть, как он обрабатывает события пользовательского интерфейса от своих дочерних элементов и создает событие изменения состояния. Или вы можете увидеть, как контейнер обрабатывает изменение состояния, а затем развернуть иерархию. Если вы можете сделать так, чтобы срез Redux отвечал за один контейнер, гораздо проще думать о событиях. Все остальные компоненты не подписаны на события как таковые, вместо этого они получают изменения, которые им необходимо визуализировать, от реквизитов, происходящих из компонента контейнера. И они уведомляют компонент контейнера о своих собственных событиях через обратные вызовы, передаваемые через реквизиты, чтобы контейнер мог их опубликовать. Это может пройти долгий и долгий путь, и если вы чувствуете, что вам нужно передавать реквизиты слишком много уровней, вы можете использовать React.children
, чтобы немного сгладить вложение, или в редких случаях контекст.
Более длинный ответ немного сложнее, поскольку публикация и подписка не имеют большого смысла, когда речь идет о React. React должен в конечном итоге отвечать за рендеринг. Как вы упомянули, не все события являются событиями пользовательского интерфейса. Но если вы моделируете вещи так, что все события, которые вы можете публиковать и подписывать, сводятся к смене магазина или реагированию на смену магазина, то вы можете создать свое приложение, ориентированное больше на Redux. Управление запросами и результатами, о которых вы говорите, должно осуществляться в простых модулях JavaScript без React. Затем вы можете использовать компонент контейнера, чтобы склеить хранилище с этим модулем.
Существуют дополнительные шаблоны, которые люди используют как создатели действий и селекторы. Это хорошо, потому что, по крайней мере, цель состоит в том, чтобы держать кодовые базы знакомыми. Но дела все еще движутся немного быстрее: React движется в сторону Hooks API и React-Redux , пытаясь наверстать упущенное . Но срезы и компоненты контейнера никуда не денутся, это естественный способ разделения проблем.
Поскольку mongrel не обновлялся в течение столь долгого времени, есть определенные функции, такие как --prefix, которые больше не работают с самой разумной версией rails (2.3 +)
, я бы рекомендовал использовать тонкий сервер вместо этого, поскольку это кажется естественным развитием mongrel, и разработчики проекта активно его развивают.
Первоначальный автор Зед Шоу больше не поддерживает его, но он все еще подходит для развертывания rails-приложений на рабочей станции в качестве альтернативы webrick (Rails по умолчанию).
Если вы не используя Windows в качестве производственной среды, я бы предложил настроить виртуальную машину с механизмом rails вашего производственного сервера.
Mongrel отлично работает в продакшене для Windows и других ОС. Он не разрабатывается, потому что он отлично работает в большинстве случаев. В рассылке ублюдков до сих пор периодически ведутся разговоры о том, чтобы исправить тот или иной случай. Но мой опыт работы с дворнягой показывает, что он отлично работает.
Я тоже некоторое время назад тестировал тонкий, и он тоже отлично работает. Я обнаружил ошибку кеширования, но сопровождающий быстро опубликовал исправление, что было приятно. Я думаю, что если вы обнаружите ошибку в Mongrel, текущие разработчики также быстро ее исправят.
Я провел сравнение тонких и mongrel здесь:
http://www.misuse.org/science/2008/04 / 07 / thin-vs-mongrel-a-ruby-on-rails-performance-shootout /
А также еще один, посвященный различным методам конвейерной обработки (справедливый прокси-модуль nginx и сокеты unix). Тонкий, похоже, демонстрирует странное поведение кластеризации при большой нагрузке - но это уже можно исправить.
http://www.misuse.org/science/2008/04/07/thin-ruby-on-rails- nginx-fair-proxy-performance-testing /