Ruby on rails 使用resque在背景中使用对虾生成pdf
我正在尝试通过Resque background job在后台创建PDF文档 我创建PDF的代码位于Rails助手方法中,我希望在Resque worker中使用该方法,如: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
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