Hello, I got the following back from 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
The way this URI comes from in my app is:
In my user_mailer I do:
@comment.attachments.each do |a|
attachments[a.attachment_file_name] =
open(a.authenticated_url()) {|f| f.read }
end
Then in my attachments model:
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
That being said, is there some type of URI.encode or parsing I can do
to prevent a valid URI (as I checked the URL works in my browser) for
erroring and killing delayed_job in rails 3?
Thank you!
Thank you. What’s the best way to Encode All Unsafe Characters?
And should that be done in the model? or in the mailer?
On Jan 18, 9:00pm, Hassan S. [email protected]
On Tue, Jan 18, 2011 at 5:38 PM, CuriousNewbie [email protected]
wrote:
Hello, I got the following back from 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
That being said, is there some type of URI.encode or parsing I can do
to prevent a valid URI (as I checked the URL works in my browser) for
erroring…
and, sorry, that doesn’t mean it’s valid.
via: http://www.ietf.org/rfc/rfc1738.txt
Other characters are unsafe because
gateways and other transport agents are known to sometimes modify
such characters. These characters are "{", "}", "|", "\", "^", "~",
"[", "]", and "`".
All unsafe characters must always be encoded within a URL.
HTH,
Hassan S. ------------------------ [email protected]
twitter: @hassan