

iOSからS3に画像をアップしたいです。本番環境はHerokuに置いてあり、画像だけをS3に保存したいです。開発はRailsで行っており、libraryはpaperclipを用いています。リンク先を参考にしましたが"status
code: 500, headers"というエラーが帰ってくる状況です。
<https://devcenter.heroku.com/articles/paperclip-s3>

未だ問題点の特定が出来ておりません。アドバイスあればご教示いただきたいです。

[code]

    #terminal
    $heroku config:set S3_BUCKET_NAME="kenja.jp"
    $heroku config:set AWS_ACCESS_KEY_ID=my_access_key_id
    $heroku config:set AWS_SECRET_ACCESS_KEY=my_secret_access_key
    
    #app/models/user.rb
    has_attached_file :photo, 
      :styles => { medium: "300x300>", thumb: "100x100>" },
      :storage => :s3,
      :bucket => 'kenja.jp',
      :s3_permissions => :public,
      :url => ":s3_domain_url",
      :path => "/assets/photos/:id/:style/:basename.:extension",
      :s3_host_name => "s3-ap-northeast-1.amazonaws.com",
      :s3_credentials => :"#{Rails.root}/config/s3.yml"
    
    
    #config/environments/staging.rb
    config.paperclip_defaults = {
      :storage => :s3,
      :s3_credentials => {
        :bucket => ENV['kenja.jp'],
        :access_key_id => ENV['my_access_key_id'],
        :secret_access_key => ENV['my_secret_access_key']
      }
    }
    
    
    #config/paperclip.rb
    Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
    Paperclip::Attachment.default_options[:path] ='/:class/:attachment/:id/:style.:extenstion'
    Paperclip::Attachment.default_options[:s3_host_name] = 's3-ap-northeast-1.amazonaws.com'
    
    
    #app/apis/v1/users.rb
      params do  
        requires :id, type:Integer
        requires :icon, type:Rack::Multipart::UploadedFile
      end
      post '/post_picture' do
        photo_file = ActionDispatch::Http::UploadedFile.new(params[:icon])
        @user = User.find(params[:id])
        @user.update(photo: photo_file)
        @user.photo
      end
    
[/code]


CC BY-SA 3.0
2015-10-18T05:26:46.097
17763
2015-10-18T07:23:27.143
6098
question
ios ruby-on-rails heroku amazon-s3
HerokuからS3に画像をアップできません。


500エラーなのでサーバー側（Rails側）でなんらかのエラーが発生しているんだと思います。

Herokuのサーバーログを見ると詳細なエラーメッセージやスタックトレースが載っているはずです。まずそれを確認してください。  
エラーメッセージやスタックトレースをじっくり確認すれば、この問題も自己解決するかもしれません。  
解決した場合は原因と解決策を自分で回答してください。

解決しなければログの内容と、解決のために自分で試してみたことを追記してください。


CC BY-SA 3.0
2015-10-18T05:47:35.440
17764
2015-10-18T05:47:35.440
85
17763
answer


heroku logsで確認したところ以下のエラーが確認できました。

[code]

    2015-10-18T06:33:10.144859+00:00 app[web.1]:  app/apis/v1/users.rb:112:in `block (2 levels) in <class:Users>'
    2015-10-18T06:33:10.144858+00:00 app[web.1]: NameError (uninitialized constant Paperclip::Storage::S3::AWS):
    2015-10-18T06:33:10.128265+00:00 app[web.1]:  User Load (0.9ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id", 15]]
    
[/code]

リンク先を確認したところ、以下のようにすればよかったようです。

[code]

    gem 'aws-sdk', '< 2.0'
    
[/code]

<https://stackoverflow.com/questions/28374401/nameerror-uninitialized-
constant-paperclipstorages3aws>


CC BY-SA 3.0
2015-10-18T07:23:27.143
17766
2015-10-18T07:23:27.143
2017-05-23T12:38:56.467
-1
6098
17763
answer