Last active
September 9, 2022 06:00
-
-
Save hopsoft/9c84c354e354c16898a44625df094347 to your computer and use it in GitHub Desktop.
Render views outside of the standard request context (i.e. ActiveJob) with Devise/Warden
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ExampleJob < ApplicationJob | |
queue_as :default | |
def perform(user) | |
# do some work | |
# HACK: get around limitations in devise/warden when rendering | |
# views outside the context of a formal http request | |
renderer = ::ApplicationController.renderer.new | |
renderer_env = renderer.instance_eval { @env } | |
warden = ::Warden::Proxy.new(renderer_env, ::Warden::Manager.new(Rails.application)) | |
renderer_env["warden"] = warden | |
html = renderer.render(partial: "path/to/partial") | |
ActionCable.server.broadcast "user-#{user.id}", message_type: "example", html: html | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for sharing! Worked flawlessly