【发布时间】:2015-03-16 10:02:08
【问题描述】:
我正在尝试使用 DelayedJob 来渲染 Prawn PDF。按照文档中的自定义工作代码,我想出了这个:
/lib/jobs/pdf_handling.rb
RenderPdf = Struct.new( :id, :view_context ) do
def perform
user = User(id)
pdf = UserFolder.new( id, view_context )
name = "user_folder_report.pdf"
send_data pdf.render, filename: name, type: "application/pdf"
end
end
PagesController.rb
def user_folder
respond_to do |format|
format.pdf do
Delayed::Job.enqueue RenderPdf.new(@user, view_context)
end
end
end
这会导致错误:
uninitialized constant PagesController::RenderPdf
在 PagesController 顶部添加所需的 RenderPdf 没有帮助。
我错过了什么?如何实现这一点,以便通过 DelayedJob 生成 PDF?谢谢。
更新
当 /jobs 移动到 /apps 下时,错误变为:
can't dump anonymous module: #<Module:0x007fca7a3ae638>
/application.rb
config.autoload_paths += Dir["#{config.root}/lib/assets/"]
更新
我变了
class RenderFolder < Struct.new( :type, :rating_id, :dis, :view_context )
def perform
到
class RenderFolder < ActiveJob::Base
def perform(...)
然后,使用 ActiveJob,您可以这样做
RenderFolder.perform_later(...)
这似乎有效...我仍在实施。
【问题讨论】:
标签: ruby-on-rails-4 delayed-job prawn