2017-05-19 7 views
0

をプロトコル(HTTPS)を欠落しています。ペーパークリップは、Amazon S3とproduction.rbで

config.paperclip_defaults = { 
    s3_host_name: "s3.#{ENV.fetch('AWS_REGION')}.amazonaws.com", 
    storage: :s3, 
    s3_credentials: { 
     bucket: ENV.fetch('S3_BUCKET_NAME'), 
     access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'), 
     secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'), 
     s3_region: ENV.fetch('AWS_REGION'), 
    } 
} 

私は初期化子/ paperclip.rbには何もありません。私のモデルでは

class MyModel < ApplicationRecord 
    has_attached_file :photo, styles: { 
     thumb: '100x100>', 
     square: '200x200#', 
     medium: '300x300>' 
    } 
    validates_attachment_content_type :photo, content_type: /\Aimage\/.*\Z/ 
    def photo_url=(url) 
    self.photo = URI.parse(url) 
    end 
end 

そして、私はそれをテスト:

m = Model.new 
m.photo_url = "https://s3.us-east-2.amazonaws.com/mybucket/sports-grill-miami.jpg" 
m.save! 
m.photo.url(:thumb) 
"//s3.us-east-2.amazonaws.com/mybucket/buckets/photos/000/000/005/thumb/sports-grill-miami.jpg?1495237443" 

をなぜHTTPSプロトコルが欠落していますか?これは、URLに接続するプロトコルが必要なので、私のアンドロイドアプリケーションをクラッシュさせています。 URLをハードコードする必要がありますか、それともPaperclipで処理できますか?

答えて

1

あなたが明示的に設定するプロトコルを追加する必要があります。

:s3_protocol => :https 
+0

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューの投稿](/レビュー/低品質の投稿/ 16179226) –

+2

これは質問の答えを提供しています。 –

4

あなたは、以下のようpaperclip設定のスキームを指定する必要があります。

config.paperclip_defaults = { 
     s3_host_name: "s3.#{ENV.fetch('AWS_REGION')}.amazonaws.com", 
     storage: :s3, 
     :s3_protocol => :https, # <- added this 
     s3_credentials: { 
      bucket: ENV.fetch('S3_BUCKET_NAME'), 
      access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'), 
      secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'), 
      s3_region: ENV.fetch('AWS_REGION'), 
     } 
    } 

:s3_protocol => :https URLのスキームhttpsを割り当てますあなたのamazon s3資産のために生成されます。詳細はdocumentationを参照してください。