Search code examples
ruby-on-railsruby-on-rails-3amazon-s3ruby-on-rails-3.2fog

Configure Rails 3 for S3 bucket using fog.yml


I have this Rails 3.2 application passed on from the previous freelancer in my company. I would like to know as to how to configure this existing S3 bucket to my new EC2 Instance.
Access to AWS is configured in fog.yml by using fog gem as well as carrierwave gem.

What am I missing in this fog.yml file

Fog.credentials_path = Rails.root.join('config/fog.yml')


CarrierWave.configure do |config|  
config.fog_credentials = {  
  }  
config.fog_directory  = "directory-name"  
 config.fog_public     = false  
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
end

Solution

  • #config/initializers/carrierwave.rb
    CarrierWave.configure do |config|
      config.fog_credentials = {
        :provider               => 'AWS',
        :aws_access_key_id      => 'aws_key',
        :aws_secret_access_key  => 'aws_secret'
      }
      config.fog_directory  = 'bucket1'
      config.fog_host       = 'https://s3.amazonaws.com'
      config.fog_public     = true
      config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
    end
    
    #app/uploader/image_uploader.rb
    def store_dir
      "images/#{model.class.to_s.underscore}"
    end
    
    #app/views/pictures/show.html.erb
    <%= image_tag @picture.image_url if @picture.image? %>`enter code here`