George -
I did the exact thing a few months ago - actually for a test environment as
I deal with credit data and cant put live data on S3. Anyhow, I tried and
really liked paperclip, but ended up just going directly with the s3 gem. I
thing there were some complications with how I wanted to be able to both
save and modify files which I found easier going with S3 gem directly.
Anyhow, here are my functions...
def self.save_file(file_path, data)
begin
if USE_AMAZON_S3
require ''aws/s3''
file_path = file_path.gsub(FILESTORE, "") # remove the path to
filestore (leaving the app as is since S3 is for test only)
#file_path = file_path.gsub(/^\//, "")
AWS::S3::Base.establish_connection!(
:access_key_id => ''zzzzz'',
:secret_access_key => ''zzzzz''
)
AWS::S3::S3Object.store(file_path, data, AMAZON_S3_BUCKET)
return true if AWS::S3::Service.response.success?
else
FileUtils.mkdir_p
GlobalFunctions.get_path_without_file_name(file_path)
chars_written = File.open(file_path, ''w'') {|f|
f.write(data) }
return true if chars_written == data.length
end
rescue
SystemError.new(:user_id => nil,
:account_id => nil,
:location => "GlobalFunctions.save_file",
:error => "failed to save file",
:incidentals => {"file_path" => file_path,
"data" => data}
).save
end
false
end
def self.load_file_data(path)
begin
if USE_AMAZON_S3
require ''aws/s3''
path = path.gsub(FILESTORE, "") # remove the path to
filestore
(leaving the app as is since S3 is for test only)
AWS::S3::Base.establish_connection!(
:access_key_id => ''zzzzz'',
:secret_access_key => ''zzzzz''
)
return AWS::S3::S3Object.value path, AMAZON_S3_BUCKET
else
return File.open(path, "r").read
end
rescue
SystemError.new(:user_id => nil,
:account_id => nil,
:location =>
"GlobalFunctions.load_file_data",
:error => "failed to read file",
:incidentals => {"path" => path}
).save
end
nil
end
On Mon, Sep 27, 2010 at 7:15 PM, giorgio
<george.peverell-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> Hi,
>
> I have used attachment_fu before with no real problems but I''m not
> sure if it is what I need now..
>
> I have an application that stores blobs (word documents, scanned
> documents etc) in the database.
> I want to convert it to store in S3.
>
> All the paperclip and attachment_fu examples deal with images and
> resizing and thumbnails etc etc which are not relevent in this case.
>
> Are they still the best options or should I just use the aws-s3 gem on
> its own?
>
> Ideally I''d like to just replace the database "content"
column by
> saving to S3 as part of an AR callback and have an accessor on the
> model that retrievs the attachment only when requested...
>
> Anybody got any examples of something like that.
>
> Cheers
> George
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> To unsubscribe from this group, send email to
>
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org<rubyonrails-talk%2Bunsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
> .
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.