Например, где метод perform
изначально вызывается в следующем задании:
вакансии/message_broadcast_job.rb
class MessageBroadcastJob < ApplicationJob
queue_as :default
def perform(message)
ActionCable.server.broadcast "room_channel", message: render_message(message) #, roomId: roomId
end
private
def render_message(message)
ApplicationController.renderer.render(partial: 'messages/message', locals: { message: message })
end
end
В assets/javascripts/channels/room.coffee есть вызов метода:
speak: (message, roomId) ->
@perform 'speak', message: message, roomId: roomId
Но похоже, что это вызывает соответствующий метод в channels/room_channel.rb:
def speak(data)
Message.create! text: data['message'], user_id: 1, room_id: data['roomId']
end
Итак, откуда вызывается задание и как я могу передать ему параметры? (В частности, у меня есть идентификатор канала комнаты, который я уже передал в room_channel.rb
через параметры, но мне также нужно получить его в действии выполнения для трансляции с соответствующего канала комнаты.
Спасибо!