У меня есть «технология» контроллера, у которой есть действие для отправки электронной почты и выставления счета, оттуда мы используем Delayed::Job.enqueue, чтобы засунуть фактическое действие электронной почты в фоновый процесс, который будет обрабатываться с помощью рабочего динамометра на Heroku.
Это все работает нормально.
Проблема, которую я обнаружил, заключается в том, что мой сгенерированный счет в формате PDF хранится в файловой системе Heroku Web Dyno, и Worker понятия не имеет, где он находится.
Я загружу PDF в процессе генерации, это чертовски долго.
Поэтому мне нужно создать счет-фактуру на рабочем динамометрическом стенде, когда он будет выполнять действие почтовой программы для отправки сообщения.
Я нашел этот блог с подробными инструкциями по созданию pdf из строки: http://viget.com/extend/how-to-create-pdfs-in-rails
Но у меня он вообще не работает, вот код:
html = render_to_string(:action =>":show", :layout => "invoice.html")
@pdf = WickedPdf.new.pdf_from_string(html)
И ошибка:
"last_error"=>"undefined method `response_body=' for #<MailSenderJob:0x007fdf7e70a638>
Я знаю, что это из документов:
WickedPdf.new.pdf_from_string(
render_to_string('templates/pdf.html.erb', :layout => 'pdfs/layout_pdf'),
:footer => {
:content => render_to_string(:layout => 'pdfs/layout_pdf')
}
)
И этот код никогда не работал для меня вообще.
То, что я получаю снова и снова, - это ошибка response_body=. Как будто вообще нет ответа.
В верхней части моего файла я делаю:
include ActionController::Rendering
Потому что это модуль, в котором есть метод render_to_string.
Любая помощь вообще - пожалуйста, имейте в виду в своем ответе, что я запускаю этот код на динамометрическом стенде Heroku WORKER - поэтому, если есть какая-либо зависимость, которую мне нужно включить вручную, которая естественным образом включена в веб-сервер, пожалуйста, дайте мне знать.