我正在尝试通过 Resque 后台作业在后台创建 PDF 文档。
我用于创建 PDF 的代码位于 Rails 辅助方法中,我想在 Resque 工作线程中使用该方法,例如:
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
The create_pdf
方法是来自DocumentHelper
但我收到此错误:
undefined method `create_pdf'
有人知道怎么做吗?
您正在尝试调用实例方法(create_pdf
)来自类方法(self.perform
)。你的代码只有在你的DocumentHelper
定义的create_pdf
作为类方法:
def self.create_pdf
如果您不需要访问create_pdf
在您看来,您可以考虑将其移至您的Document
类,作为实例方法,然后你可以这样做@doc.create_pdf(pdf)
.
但是,如果您需要访问create_pdf
在您的观点中,您也可以将module_function :create_pdf
在你的里面DocumentHelper
文件,或者您可以动态地将其添加到您的工作程序中:
DocumentHelper.module_eval do
module_function(:create_pdf)
end
DocumentHelper.create_pdf(pdf)
然后就可以正常调用了DocumentHelper.create_pdf
.
另外,在 Rails 3 中,我认为你只需要include DocumentHelper
, 而不是include ActionView::Helpers::DocumentHelper
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)