tôi đã nhận như sau trở lại từ delayed_job:URI không hợp lệ - Cách ngăn chặn, URI :: Lỗi InvalidURIError?
[Worker(XXXXXX pid:3720)] Class#XXXXXXX failed with URI::InvalidURIError: bad URI(is not URI?): https://s3.amazonaws.com/cline-local-dev/2/attachments/542/original/mac-os-x[1].jpeg?AWSAccessKeyId=xxxxxxxx&Expires=1295403309&Signature=xxxxxxx%3D - 3 failed attempts
Cách URI này xuất phát từ trong ứng dụng của tôi.
Trong user_mailer của tôi, tôi làm:
@comment.attachments.each do |a|
attachments[a.attachment_file_name] = open(a.authenticated_url()) {|f| f.read }
end
Sau đó, trong mô hình đính kèm của tôi:
def authenticated_url(style = nil, expires_in = 90.minutes)
AWS::S3::S3Object.url_for(attachment.path(style || attachment.default_style), attachment.bucket_name, :expires_in => expires_in, :use_ssl => attachment.s3_protocol == 'https')
end
Nói như vậy, là có một số loại URI.encode hoặc phân tích cú pháp tôi có thể làm gì để ngăn chặn một URI hợp lệ (khi tôi kiểm tra URL hoạt động trong trình duyệt của tôi) để báo lỗi và giết chết delay_job trong đường ray 3?
Cảm ơn bạn!
tôi đã cố gắng 'mở (URI.parse (URI.encode (a.authenticated_url()))' nhưng đó errord với OpenURI :: HTTPError: 403 Forbidden – AnApprentice
lỗi đó không có nghĩa là URL là xấu, điều đó có nghĩa là trang không có sẵn cho bạn –