2015-10-18 103 views
0

我想通過回形針通過Heroku將圖片從iOS上傳到S3。我用這個網站作爲參考。 https://devcenter.heroku.com/articles/paperclip-s3通過回形針通過Heroku上傳圖片到S3通過回形針

但是,它返回錯誤「狀態碼:500,標題」。我不確定是什麼問題。我期待着您的迴音。

#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 

日誌

我檢查Heroku的日誌,然後下面說。

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]] 

此鏈接告訴我,我需要降級aws-sdk的版本。 NameError (uninitialized constant Paperclip::Storage::S3::AWS):

gem 'aws-sdk', '< 2.0' 
+0

你怎麼在你的Heroku的日誌看? –

+0

看看這個帖子的接受答案可以幫助你:http://stackoverflow.com/questions/24356759/heroku-500-error-while-using-heroku-rails –

回答

1

這是你的錯誤:

NameError (uninitialized constant Paperclip::Storage::S3::AWS)

網上通緝後,這基本上是由沒有定義的AWS模塊aws-sdkv2寶石造成的。簡而言之,這意味着Paperclip無法調用將其數據保存到S3所需的模塊。

的解決方法是降級aws-sdk版本1

#Gemfile 
gem 'aws-sdk', '< 2.0' 

...然而,誰喜歡的解決方法?

應該能夠得到它的工作,如果你pull from the Paperclip master branch

#Gemfile 
gem "paperclip", git: "https://github.com/thoughtbot/paperclip.git", branch: "master"