나는 몇 시간 동안 비틀 거리며 또한 잘못한 일을하고 있습니다. 두 가지 끔찍한 해킹이 있습니다. 첫 번째 문제는 jbuilder를 사용하여 json을 구성하여 MVC 컨텍스트가 아닌 sidekiq 작업자의 페이로드에 저장하려고했습니다. 다행히도 필자는 하나의 표현 만 필요로하므로 본질적으로 템플릿을 다시 작성했습니다 user.rb
아래에 표시된 수정 된 예제. 다음
def to_builder
Jbuilder.new do |user|
user.external_id id
user.username username
user.full_name full_name
end
end
그리고
는 믿을 수 없을만큼 바보 json으로를 저장하는
to_user_hash = {}
to_user_hash["user"] = JSON.parse(user.to_builder.target!)
을 사용했다.
active_model_serializers
을 사용할 때 sidekiq 작업자가 websockets을 통해 실시간 활동 페이지를 렌더링하고 다음을 수행했습니다.
class ActivityBroadcasterWorker < ApplicationWorker
sidekiq_options queue: :low, retry: true, backtrace: true
def perform(activity_id)
view = ActionView::Base.new(ActionController::Base.view_paths)
view.class_eval("include Rails.application.routes.url_helpers")
view.extend ApplicationHelper
if activity = PublicActivity::Activity.find_by_id(activity_id)
template = view.render_activity(activity)
ActionCable.server.broadcast('activity_channel', message: template)
end
end
end
는 단순히 내 자원이 여기 제이빌더 말할 수있는 더 나은 솔루션을 발견했고, 나는이보기 또는 부분이보기를 렌더링 할?