データベースをローカルで再シードするたびに、Amazon S3 バケットに重複したイメージが作成されます。これは、正しくシードしていないために発生していると思いますが、適切な方法がわかりません。ここに示す方法を使用しています。Rails 4、Ruby 2、paperclip 3.5.2、および aws-sdk 1.20.0 を使用しています。
以下のファイルをご覧くださいseeds.rb
。バケット内の正しいフォルダーに既にアップロードされている画像の URL に画像を設定しようとしています。ただし、ここで使用すると、通常はhttp://s3.amazonaws.com/BUCKET_NAME/restaurants/images/1/original/open-uri20131111-22904-open()
のような新しい同一のファイルが同じフォルダーに保存されると思いますxvzitl.?1384211739 .
編集:私のバケットには、このファイルとhttp://s3.amazonaws.com/BUCKET_NAME/restaurants/images/1/original/NAME.jpgの両方が保存されます
本当に助けていただければ幸いです!
モデル
has_attached_file :image,
:styles => { :medium => "300x300>", :thumb => "100x100>" }
種.rb
Restaurant.create!( name: ...,
description: ...,
image: open('https://s3.amazonaws.com/<BUCKET NAME>/restaurants/images/1/original/<NAME>.jpg') )
config/initializers/paperclip.rb
Paperclip::Attachment.default_options[:storage] = :s3
Paperclip::Attachment.default_options[:s3_credentials] = {
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
Paperclip::Attachment.default_options[:bucket] = ENV['AWS_BUCKET']
Paperclip::Attachment.default_options[:url] = ":s3_path_url"
Paperclip::Attachment.default_options[:path] = "/:class/:attachment/:id/:style/:basename.:extension"
Paperclip::Attachment.default_options[:default_url] = "https://s3.amazonaws.com/<BUCKET NAME>/images/missing.png"