我正在使用Prawn從我的控制器生成一個PDF文件,當直接訪問這個url時,它完美地工作,I.E. localhost:3000/responses/1.pdf爲什麼Net :: HTTP在我試圖訪問對蝦生成的PDF時超時?
但是,當我嘗試生成包含在Mailer中的此文件時,所有內容都會凍結並超時。
我已經嘗試過各種生成/附加文件的方法,但都沒有改變結果。
我也嘗試修改Net :: HTTP的超時無濟於事,它只需要更長的時間。
如果我在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郵遞員:
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郵遞員:
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!'
端
如果我切換a.body和a.filename,它錯誤出先用
undefined method `filename=' for #<Mail::Part:0x007ff620e05678>
我發現每個例子都有不同的語法或建議,但沒有一個修復Net :: HTTP超時的問題。 Rails 3.1,Ruby 1.9.2
你試着用`curl`或`來獲取該PDF網址wget`? – 2011-12-14 19:45:47