2015-01-18 5 views
0

Im пытается использовать DelayedJob для рендеринга PDF-файлов. После кода пользовательских заданий в документации, я придумал это:Как реализовать задание DelayedJob для рендеринга 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 

Добавление требуемого RenderPdf в верхней части PagesController не помогает ,

Что мне не хватает? Как я могу реализовать это, поэтому генерация PDF происходит через DelayedJob? Благодарю.

обновления

Когда/работа перемещается в/приложения изменяется ошибка в:

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

Папка lib по умолчанию больше не используется в рельсах. вы можете либо добавить его к autoload_path, либо (что бы я сделал) просто его в папке app/xxx. обычно у меня есть app/support или что-то для произвольных классов полезности.

+0

Я изначально был в приложении/заданиях. Но получил ту же ошибку. Я вытащу его из библиотеки и повторю попытку. – hellion