4

アプリをherokuで実行し、Amazons3を使用してバケットにアップロードされたすべてのアセットを保存するように構成しました。これですべて正常に機能します。したがって、画像をローカルにアップロードしようとすると(開発)、次のエラーが発生します

AWS::S3::Errors::PermanentRedirect in RecipesController#update 
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

私の更新アクション

 def update
 @recipe = Recipe.find(params[:id])

 if @recipe.update_attributes(params[:recipe])
  redirect_to my_recipes_path, :notice => "Successfully updated recipe"
 else 
 render :action => 'edit'

end
end

少し読んだ後、それは私がEUでバケットを使用しているためであるように見えますが(デフォルトの米国のものではありません)

私は2つのバケットを持っています。1つは開発用で、もう1つは本番用です。クレデンシャルを保持するためにs3.ymlファイルを作成しましたが、ENV変数を使用する方が良いと思いますが、Ubuntuを使用して、.bashrcファイルを更新できますか?それについてはよくわかりません..とにかく私のs3.ymlファイル(セキュリティのために実際のキーは明らかに削除されました)

development:
access_key_id: KEY
secret_access_key: KEY
bucket: assets.recipesappdev

production:
access_key_id: KEY
secret_access_key: KEY
bucket: assets.recipesapp

と私のレシピモデルの設定

has_attached_file :avatar, 
:styles => { :myrecipes => "260x180#", :showrecipe => "600x300#", :medium => "300x300>", :thumb => "100x100>" },
 :storage => :s3,
 :s3_credentials => "#{Rails.root}/config/s3.yml",
  :path => "/images/:id/:style.:extension"

誰かがこれを修正しましたか?私はこれをたとえばhttp://www.conandalton.net/2011/02/paperclip-s3-and-european-buckets.htmlで試しましたが、初期化子が間違っている可能性がありますが、機能しません、アプリに合わせて設定してみました

  Paperclip.interpolates(:s3_eu_url) { |assets, style|
 "#{assets.s3_protocol}://s3-eu-west-1.amazonaws.com/#{assets.recipesappdev}  /#{assets.path(style).gsub(%r{^/}, "")}"
   }
4

2 に答える 2

13

urlオプションをhas_attached_fileに設定してみてください":s3_domain_url"。(引用符で囲むことを忘れないでください。)

has_attached_file :avatar, 
                  :styles => { :myrecipes => "260x180#", :showrecipe => "600x300#", :medium => "300x300>", :thumb => "100x100>" },
                  :storage => :s3,
                  :s3_credentials => "#{Rails.root}/config/s3.yml",
                  :path => "/images/:id/:style.:extension",
                  :url => ":s3_domain_url"

については、RDocを参照してくださいPaperclip::Storage::S3

于 2012-12-15T17:06:42.077 に答える
6

私のようなものの場合、urlソリューションが機能していません。s3_host_nameオプションを設定してみてください。

:s3_host_name => "s3-eu-west-1.amazonaws.com"

ヨーロッパのノードにこの問題があるようです。

ここから撮影

于 2014-08-01T12:43:52.880 に答える