2012-03-03 11 views
7

私はCarrierWaveをFogとAmazon S3で動作させるように設定する方法を理解しようとしています。 S3では、バケット「バケット1」にフォルダ「画像」があります。アップロードは正常に動作します。たとえば、画像がhttps://s3.amazonaws.com/bucket1/images/picture/pic1.jpgという形式のものにアップロードされる可能性があります。しかし、showビューでimage_urlヘルパーを呼び出すと、私はhttps://s3.amazonaws.com/images/picture/pic1.jpgになります。私はここで何が欠けていますか?CarrierWaveとFog、S3バケットとstore_dirの設定

#config/initializers/carrierwave.rb 
CarrierWave.configure do |config| 
    config.fog_credentials = { 
    :provider    => 'AWS', 
    :aws_access_key_id  => 'aws_key', 
    :aws_secret_access_key => 'aws_secret' 
    } 
    config.fog_directory = 'bucket1' 
    config.fog_host  = 'https://s3.amazonaws.com' 
    config.fog_public  = true 
    config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} 
end 

#app/uploader/image_uploader.rb 
def store_dir 
    "images/#{model.class.to_s.underscore}" 
end 

#app/views/pictures/show.html.erb 
<%= image_tag @picture.image_url if @picture.image? %> 
+0

あなたはHerokuの上でそれをホストしているの? – noob

+0

私はそれをHostGator(dev)&EC2(prod)経由でホストしています –

答えて

4

config.fog_host = 'https://s3.amazonaws.com'

設定を削除し、代わりに

ストレージ入れてみてくださいに霧

をごアップローダー。あなたが提供しているものと実際のパスを上書きしているかもしれません。

+0

私は前に両方の構成を持っていました。私の修正はfog_hostを削除することでした。これで、https://bucket1.s3.amazonaws.com/images/picture/image_name.jpgにアップロードされます。どちらもうまくいく! –

1

この特定の質問に直接関連しているわけではありませんが、以下の情報が関連して役立つと感じています。

あなたはS3で非パブリックリンクを使用している場合、あなたはfog_authenticated_url_expiration設定パラメータとそれらのリンクのTTL制御することができます。

... 
config.fog_public = false 
config.fog_authenticated_url_expiration = 600 # 10 minutes 
... 
関連する問題