Skip to main content

Configure amazon s3 with your rails app in just 5 mins

if you are looking to make use of your uploads using paperclip on AMAZON S3,then this is something that will help you.
i tried the same and wasted 5 days but its very easy by using ONLY aws-sdk gem and you can start uploading to S3.
 Before starting i assume few thing from you:
  1. You have a running rails app ready.
  2. You have an active AMAZON S3 account (get the credentials,you will need it now)
  3. You are using paperclip 3.5.1(i prefer)
  4. You uploads are saving to your system locally
short preview of the sequence you need to understand:
START -> get aws-sdk gem -> create new s3.yml -> configure an initializer-paperclip.rb using AMAZON S3 credentials ----END----------THAT'S IT

lets get started:
  1. Install 'aws-sdk' gem by including in gemfile and running bundle install.
Gemfile:

gem 'paperclip', '3.5.1'
gem "aws-sdk"
  1.  Create new yml file such as config/s3.yml and store your AMAZON S3 credentials as shown below:
development:
bucket:development_bucket
access_key_id: YOURACCESSKEY  
secret_access_key: YOURSECRETACCESSKEY 
production: 
bucket: production_bucket
access_key_id: YOURACCESSKEY
secret_access_key: YOURSECRETACCESSKEY

 3.You need an initializer file to override default url options using config/initializer/paperclip.rb 
Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Paperclip::Attachment.default_options[:path] = '/:class/:id/:filename' 
S3_CREDENTIALS = Rails.root.join("config/s3.yml")  

4.add this to your image.rb or any other file using has_attached_file.
has_attached_file :avatar,
:storage =>:s3, 
:s3_credentials => S3_CREDENTIALS  
WE ARE DONE...start your uploads and check it on AWS MANAGEMENT CONSOLE in development bucket




Comments

Popular posts from this blog

Access files on AWS S3 bucket using aws-sdk-s3 with Rails 6

This is a quick post to share few easy methods to access files on AWS S3. The below custom utility methods uses  aws-sdk-s3 Firstly lets define a constant to access files on S3 -  ##to manage S3 Resources S3 = Aws::S3::Resource.new( region: "YOUR-REGION", access_key_id: "YOUR-AWS-KEY", secret_access_key: "YOUR-AWS-SECRET") ##to query S3 S3_client = Aws::S3::Client.new( access_key_id: configatron.aws.s3.credentials.access_key_id, secret_access_key: configatron.aws.s3.credentials.secret_access_key, region: configatron.aws.s3.region ) Now, lets use the S3 OBJECT to access files in different ways -  1. Get all files in a S3 FOLDER     ##this gives a array of file paths present in the folder specified by prefix attribute          s3objects = S3.bucket("my-output-bucket").objects({prefix: "/inputs/any-random-user-folder"}).collect(&:key) ##you can also delete the file if found ...

Setting Axios to put/post dynamically

 Let me avoid wasting more time and quickly jump on the problem statement. What is the problem statement -  - I want to use the same React component both for Create/Update. How I achieved it -  - Firstly for new object, it worked smoothly and I wanted to reuse the same component again for edit/update too. - I sent the existing values as props and saved them into the corresponding states. - I reused the existing method ( axios server call ) so that it dynamically POST/PUT as needed.This is show below -         //this method calls post/put dynamically - simple code here..no rocket science methodCall = () => { const { Id, editable, details } = this.state; //check if new or existing record if (editable) { return API.put(`/post/${Id}`, details); } else { return API.post("/post", details); } }; //call this method onClick/onSubmit - as you want to handleSubmit = (event) => { event.preventDefault(); ...

So easy to install ruby on rails on ubuntu 12.04/centos 6 and start development

Its easy to start development on ubuntu/centos using vmware and start development.i will start the code on certain assumptions : you know ruby on rails you are aware of how to make use of google(in case u are stuck and want to explore more without spoon feeding) LAST BUT NOT LEAST---you love coding short preview of sequence you need to follow:  START -> get vmware -> get ubuntu/centos -> get rvm -> get ruby -> get rails----END--THAT'S IT Lets start and finish this quickly using below mentioned steps: install vmware player if you are using windows/mcintosh from https://my.vmware.com/web/vmware/downloads  NOW.vmware player need image file of the operating system you want,so hit the url and get centos at http://vault.centos.org/6.2/isos/ OR ubuntu at http://www.ubuntu.com/download/desktop ONCE both vmware player and ubuntu/centos are downloaded,follow the steps to first install vmware(very simple) and mounting ubu...