2011-09-17 10 views
3

以下のコードを使用して、Paperclipを使用してFacebookプロフィール画像を開いてS3にアップロードしています。コード(Railsの3.1、ルビー1.9.2 P290)私はlocalhost上で正常に動作しますが、それはHerokuの(竹-MRI-1.9.2)に分割しHerokuのopen-uriでエラーが発生しました

facebook_image_url = access_token['user_info']['image'].gsub("square", "large") 
url = URI.parse(facebook_image_url) 

#Follow the redirect of Facebook profile picture url 
res = Net::HTTP.start(url.host, url.port) { |http| 
    http.get(facebook_image_url) 
} 

signed_in_resource.avatar = open(res['location']) 
signed_in_resource.save 
signed_in_resource 

誰でもどんな提案を持っていますか?

+0

Herokuの読み取り専用ファイルシステムと関係する可能性があります。たぶんopen-uriが何らかの一時ファイルを作成しようとしているのでしょうか?私はこれが理由だとは知らないが、チェックする価値があるかもしれない。 – Elad

+0

私はS3 URLと同様の問題がありました。私は、アップロードされたファイルのファイル名のおかげで、多くのものがスペースがあったことに気付いた。 URI.escapeを実行すると( 'url to my picture.jpg')、試してみる価値があるかもしれませんが、ソート済みです。 – Pete

答えて

0

URLTempfileの更新版を使用して同様の問題を解決しました。 S3をイメージストレージとしても使用します。

https://github.com/chris/paperclip_url_support、あなたのインストールのlibフォルダに入れてください。

product = Product.first(:conditions => {:_id => self.product_id}) 
raise "Unable to get product with id #{self.product_id}" unless product 
product.picture = URLTempfile.new(self.image_url) 
product.save! 

これは、あなたと同じ設定の英雄のプロダクションでこれを使用します。 (Heroku 1.9.3、Rails 3.1)。

希望すると、これが役立ちます。

関連する問題