アプリを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{^/}, "")}"
}