如何为Prawn PDF渲染实现DelayedJob自定义作业?

时间:2015-01-18 04:00:39

标签: ruby-on-rails-4 delayed-job prawn

我试图使用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(...)

这似乎有效......我还在实施。

1 个答案:

答案 0 :(得分:1)

默认情况下,不再在rails中加载lib文件夹。您可以将其添加到autoload_path或(我会做什么)只是将其添加到某个app/xxx文件夹中。通常,我有app/support或任意实用程序类的东西。