从Sidekiq Worker中渲染Rails视图

时间:2014-08-02 22:20:31

标签: ruby-on-rails ruby view background-process sidekiq

我有一个Sidekiq工作人员进行一些后台处理,然后最终将成功消息POST到第三方API。我发布的这条消息本质上是一条“谢谢”消息,可以包含HTML。

在邮件中,我想以正确格式化的方式链接回我的网站。这听起来像是对我的看法。我喜欢简单地使用视图模板,将其渲染为HTML,最后将其发布到API。

对于我的生活,我无法想象如何从我的Sidekiq工作者中呈现视图。

我考虑过设置一个虚拟控制器/视图组合并从工作者内部实例化它,但它似乎不对。

非常感谢任何输入。

2 个答案:

答案 0 :(得分:8)

在您的worker中,您可以直接使用ActionView :: Base来呈现视图。例如,要呈现users/events部分:

view = html = ActionView::Base.new(Rails.root.join('app/views'))
view.class.include ApplicationHelper
view.render(
  partial: 'users/event', 
  object: user.events.last
)

答案 1 :(得分:2)

您可以使用ERB在作业中渲染模板。

require 'erb'

@text = "my answer" # variables, accessible in template.
template = "This is <%= @text %>."

# you can also render file like ERB.new(File.read(<file name here>))
renderer = ERB.new(template)
puts output = renderer.result()

有关ERB

的更多信息