Ruby on rails 使用resque在背景中使用对虾生成pdf

Ruby on rails 使用resque在背景中使用对虾生成pdf,ruby-on-rails,resque,prawn,Ruby On Rails,Resque,Prawn,我正在尝试通过Resque background job在后台创建PDF文档 我创建PDF的代码位于Rails助手方法中,我希望在Resque worker中使用该方法,如: class DocumentCreator @queue = :document_creator_queue require "prawn" def self.perform(id) @doc = Document.find(id) Prawn::Document.generate('tes

我正在尝试通过Resque background job在后台创建PDF文档

我创建PDF的代码位于Rails助手方法中,我希望在Resque worker中使用该方法,如:

class DocumentCreator
  @queue = :document_creator_queue
  require "prawn"

  def self.perform(id)
    @doc = Document.find(id)

    Prawn::Document.generate('test.pdf') do |pdf|
      include ActionView::Helpers::DocumentHelper
      create_pdf(pdf)
    end
  end
end
create\u pdf
方法来自
DocumentHelper
,但我遇到了以下错误:

undefined method `create_pdf' 

有人知道怎么做吗?

您试图从类方法(
self.perform
)调用实例方法(
create\u pdf
)。只有将
DocumentHelper
定义为类方法时,您的代码才会工作:

def self.create_pdf

如果您不需要在您的视图中访问<代码> CREATEYPDF <代码>,您可以考虑将它移到您的<代码>文档>代码>类,作为实例方法,然后您可以做<代码> @ doc.CurtEypdf(PDF)。p> 但是,如果您还需要在视图中访问

create_pdf
,您可以在
DocumentHelper
文件中放置
module\u函数:create_pdf
,也可以在工作程序中动态添加此函数:

DocumentHelper.module_eval do
  module_function(:create_pdf)
end
DocumentHelper.create_pdf(pdf)
然后您可以正确地调用
DocumentHelper.create\u pdf

另外,在Rails 3中,我认为您只需要
包含DocumentHelper
,而不需要
包含ActionView::Helpers::DocumentHelper