refactor(broadcasting): add Broadcastable to List + Order, remove monkey-patch

- include Broadcastable in app/models/list.rb
- include Broadcastable in app/models/order.rb
- Remove config/initializers/model_broadcast.rb (ApplicationController.new anti-pattern)
- Broadcasting now goes through Mozo.broadcast_* directly, not via controller hack
This commit is contained in:
BenClaw
2026-05-17 16:36:28 +02:00
parent 1f52448253
commit a755d8a205
3 changed files with 2 additions and 31 deletions
+1
View File
@@ -1,6 +1,7 @@
class List
include SimplyStored::Couch
include ActiveModel::SerializerSupport
include Broadcastable
include List::JoinRequests
per_page_method :limit_value #kaminari
+1
View File
@@ -1,6 +1,7 @@
class Order
include SimplyStored::Couch
include ActiveModel::SerializerSupport
include Broadcastable
property :state, default: 'placed' # placed, active, delivered, cancelled, closed
-31
View File
@@ -1,31 +0,0 @@
# frozen_string_literal: true
# Broadcast shim: provides broadcast_supplier / broadcast_user to all
# SimplyStored::Couch models without requiring ApplicationController.new.
#
# PREVIOUSLY (dangerous):
# ApplicationController.new.send(:broadcast_supplier, *args)
# → leaked controller instances, no request lifecycle
#
# NOW:
# Delegates directly to Mozo.broadcast_supplier / Mozo.broadcast_user
# which uses Mozo.broadcaster (configurable: Faye or ActionCable).
#
# MIGRATION PATH:
# Models should `include Broadcastable` directly instead of relying
# on this monkey-patch. Once all models include Broadcastable, this
# initializer can be removed.
#
require 'simply_stored/couch'
module ModelBroadcast
def broadcast_supplier(sid, event, data = {})
Mozo.broadcast_supplier(sid, event, data)
end
def broadcast_user(uid, event, data = {})
Mozo.broadcast_user(uid, event, data)
end
end
SimplyStored::Couch.send(:include, ModelBroadcast)