我试图使用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生成?感谢。
在/ apps下移动/ jobs时,错误更改为:
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(...)
这似乎有效......我还在实施。
答案 0 :(得分:1)
默认情况下,不再在rails中加载lib
文件夹。您可以将其添加到autoload_path
或(我会做什么)只是将其添加到某个app/xxx
文件夹中。通常,我有app/support
或任意实用程序类的东西。