Skip to content

Commit 7e97e8c

Browse files
committed
pass around the actual message
1 parent 79b9839 commit 7e97e8c

3 files changed

Lines changed: 13 additions & 9 deletions

File tree

‎app/models/solid_cable/message.rb‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ class Message < SolidCable::Record
88
where(created_at: ...::SolidCable.message_retention.ago)
99
}
1010
scope :broadcastable, lambda { |channel_hashes, last_id|
11-
where(channel_hash: channel_hashes).where(id: (last_id.to_i + 1)..).order(:id)
11+
select(column_names.excluding("created_at", "updated_at")).
12+
where(channel_hash: channel_hashes).where(id: (last_id.to_i + 1)..).order(:id)
1213
}
1314

1415
class << self

‎lib/action_cable/subscription_adapter/solid_cable.rb‎

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -156,23 +156,26 @@ def channels
156156

157157
def broadcast_messages
158158
::SolidCable::Message.
159-
broadcastable(channels.keys, last_id).
160-
pluck(:id, :channel, :channel_hash, :payload).each do |id, channel, channel_hash, payload|
159+
broadcastable(channels.keys, last_id).each do |message|
161160
should_broadcast_message = false
162-
channels.compute_if_present(channel_hash) do |channel_last_id|
163-
break if channel_last_id >= id
161+
channels.compute_if_present(message.channel_hash) do |channel_last_id|
162+
break if channel_last_id >= message.id
164163

165164
should_broadcast_message = true
166-
id
165+
message.id
167166
end
168167

169-
broadcast(channel, payload) if should_broadcast_message
170-
self.last_id = id
168+
broadcast(message) if should_broadcast_message
169+
self.last_id = message.id
171170
end
172171

173172
self.reconnect_attempt = 0
174173
end
175174

175+
def broadcast(message)
176+
super(message.channel, message.payload)
177+
end
178+
176179
def with_polling_volume
177180
if ::SolidCable.silence_polling? && ActiveRecord::Base.logger
178181
ActiveRecord::Base.logger.silence { yield }

‎test/lib/solid_cable/batched_broadcaster_test.rb‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class SolidCable::BatchedBroadcasterTest < ActiveSupport::TestCase
2424
end
2525

2626
assert_equal 1, batches.size
27-
assert_equal [ [ "one", "first" ], [ "two", "second" ] ], batches.pop.sort
27+
assert_equal [ "one", "two" ], batches.pop.pluck(:channel).sort
2828
end
2929

3030
test "rejects broadcasts after shutdown" do

0 commit comments

Comments
 (0)