我正在使用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