Sunday, 14 April 2013

quick upload to amazon S3 with Fog and Carrierwave

require 'rubygems'
require 'fog' # version 1.10.1


fog_credentials = {
  provider: "AWS",
  aws_access_key_id: "QWERTTYQWERTTYQWERTT",
  aws_secret_access_key: "q1w2e3r4t5yQWERTYUq1w2e3r4t5yQWERTYasdf1",
  region: "ap-southeast-2" # Sydney ;)
}


CONNECTION = Fog::Storage.new fog_credentials

S3 = CONNECTION.directories.get 'bucket-name'
S3.files.create(key: 'test_me/test1', body: 'xxxxxxxxx')

The following works with Carrierwave
require 'carrierwave'
require 'fog'

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider:              'AWS',
    aws_access_key_id:     'QWERTYQWERTYQWERTYTY',
    aws_secret_access_key: 'qewr1234qewr1234qwer1234qwer1234qwer1234',
    region:                'ap-southeast-2' # Sydney :)
  }
  config.fog_public    = false
  config.fog_directory = 'bucket-name'
end

class MyUploader < CarrierWave::Uploader::Base
  storage :fog
end

file = File.open('/tmp/tmp.txt')
uploader = MyUploader.new
uploader.store!(file)