Я использую Prawn для создания PDF из моего контроллера, и при прямом доступе к URL-адресу он работает без сбоев, IE localhost: 3000 / response / 1.pdf
Однако, когда я пытаюсь сгенерироватьэтот файл на лету для включения в почтовую программу, все зависает и время ожидания истекает.
Я пробовал различные способы создания / прикрепления файла, и ни один из них не изменил результат.
Iтакже пытался изменить время ожидания для Net :: HTTP, но безрезультатно, просто требуется больше времени для LONGER.
Если я запускаю эту команду на консоли Rails, я получаю поток данных PDF.
Net::HTTP.get('127.0.0.1',"/responses/1.pdf", 3000)
Но если я включу этот код в свой контроллер, он истечет.
Я попробовал два разных метода, и оба неоднократно терпели неудачу.
Метод 1 Контроллер:
http = Net::HTTP.new('localhost', 3000)
http.read_timeout = 6000
file = http.get(response_path(@response, :format => 'pdf')) #timeout here
ResponseMailer.confirmComplete(@response,file).deliver #deliver the mail!
Метод 1 Mailer:
def confirmComplete(response,file)
email_address = response.supervisor_id
attachments["test.pdf"] = {:mime_type => "application/pdf", :content=> file}
mail to: email_address, subject: 'Thank you for your feedback!'
end
Время действия приведенного выше кода истекло.
Метод 2 Контроллер:
ResponseMailer.confirmComplete(@response).deliver #deliver the mail!
Метод 2 Mailer:
def confirmComplete(response)
email_address = response.supervisor_id
attachment "application/pdf" do |a|
a.body = Net::HTTP.get('127.0.0.1',"/responses/1.pdf", 3000) #timeout here
a.filename = "test.pdf"
end
mail to: email_address, subject: 'Thank you for your feedback!'
end
Если я переключаю a.body и a.filename, он сначала выдает ошибку с
undefined method `filename=' for #<Mail::Part:0x007ff620e05678>
Каждый найденный пример имеет другой синтаксис илипредложение, но никто не решает проблему, что Net :: HTTP истекает.Rails 3.1, Ruby 1.9.2