ungültige URI - Wie um zu verhindern, URI::InvalidURIError Fehler?

Bekam ich Folgendes zurück von delayed_job:

[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

Die Art und Weise dieser URI kommt in meine app.

In meinem user_mailer ich tun:

  @comment.attachments.each do |a|
    attachments[a.attachment_file_name] = open(a.authenticated_url()) {|f| f.read }
  end

Dann in meinem Anlagen-Modell:

  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

Dass gesagt wird, gibt es eine Art von URI.Kodieren und analysieren kann ich tun, um zu verhindern, dass eine gültige URI (wie ich überprüft die URL funktioniert in meinem browser) für erroring und töten delayed_job in rails 3?

Danke!

  • Ich habe versucht, ' open( URI.parse(URI.encode( ein.authenticated_url() )) ' aber, dass errord mit OpenURI::HTTPError: 403 Forbidden
  • Dieser Fehler bedeutet nicht, die URL ist schlecht, es bedeutet, die Seite ist nicht verfügbar.
InformationsquelleAutor AnApprentice | 2011-01-19
Schreibe einen Kommentar