1
votes

Using paperclip gem to upload images which works in development , but not in production.

Aws::Errors::MissingRegionError (missing region; use :region option or export region name to ENV['AWS_REGION']):

heroku conifg

AWS_ACCESS_KEY_ID:     <Aws Access Key Id>
**AWS_REGION:            us-west-2**
AWS_SECRET_ACCESS_KEY: <Aws Secret Access Key>
DATABASE_URL:          postgres://[email protected]:5432/d2g7h0v5
LANG:                  en_US.UTF-8
RACK_ENV:              production
RAILS_ENV:             production
S3_BUCKET_NAME:        <Bucket Name>

config.production file

config.paperclip_defaults = {
  :storage => :s3,
    :region => ENV['AWS_REGION'],
  :s3_credentials => {
    :bucket => ENV['S3_BUCKET_NAME'],
    :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
    :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
  }
}

gemfile

source 'https://rubygems.org'

ruby '2.0.0'
gem 'rails', '4.1.7'
gem 'sqlite3', group: :development
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0',          group: :doc
gem 'spring',        group: :development
gem 'simple_form'
gem 'bootstrap-sass', '~> 3.3.5'
gem 'devise'
**gem 'paperclip', github: 'thoughtbot/paperclip'
**gem 'aws-sdk', '~> 2.1', '>= 2.1.31'****

gem 'rails_12factor', group: :production
gem 'pg', group: :production

updated config file

config.paperclip_defaults = {
  :storage => :s3,
     :s3_region => ENV['AWS_REGION'],
     :s3_credentials => {
     :bucket => ENV['S3_BUCKET_NAME'],
     :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
     :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
  }
}
1

1 Answers

1
votes

Use s3_region, so your config looks like this:

config.paperclip_defaults = {
  :storage => :s3,
  :region => ENV['AWS_REGION'],
  :s3_region => ENV['AWS_REGION'],
  :s3_credentials => {
    :bucket => ENV['S3_BUCKET_NAME'],
    :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
    :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
  }
}

I think the :region => ENV['AWS_REGION'], is not necessary.