Joe Essey
Joe Essey

Reputation: 3538

Paperclip/heroku/S3 Configuration is setup as best as I can tell but getting error on upload

Here's the error I get when I try to upload an image through the live site:

ArgumentError (missing required :bucket option):
   app/controllers/editions_controller.rb:53:in `block in create'
   app/controllers/editions_controller.rb:52:in `create'

I have the latest versions of aws-sdk and paperclip

I've got the following in production.rb

config.paperclip_defaults = {
  :storage => :s3,
  :s3_credentials => {
    :bucket => ENV['bucket_name'],
    :access_key_id => ENV['key'],
    :secret_access_key => ENV['key2']
  }

I've got my AWS_BUCKET set on my heroku app:

AWS_BUCKET:                bucket_name
S3_BUCKET_NAME:            bucket_name
AWS_ACCESS_KEY_ID:         key 
AWS_SECRET_ACCESS_KEY:     key2

Can anybody suggest why this isn't working? Thanks.

Upvotes: 0

Views: 228

Answers (1)

stephenmurdoch
stephenmurdoch

Reputation: 34643

You've got:

:s3_credentials => {
  :bucket => ENV['bucket_name']
}

I've always been told that you should capitalize the constants like so:

:s3_credentials => {
  :bucket => ENV['BUCKET_NAME']
}

Additionally, you have not actually set an ENV variable called BUCKET_NAME on heroku, you have the following:

AWS_BUCKET:                bucket_name

But if your env var is called BUCKET_NAME, then you need the following instead:

BUCKET_NAME:                bucket_name

So from the commane line you'd want to run something like heroku config:set BUCKET_NAME=bucket_name

And finally, you've changed the names of your env vars from those that are suggested in the paperclip readme. You've gone with ENV['BUCKET_NAME'] when everyone else uses ENV['AWS_BUCKET']. I dunno if that will effect anything, but try using the process outlined here by heroku.

Try those changes and let me know how they work out. Good luck.

Upvotes: 1

Related Questions