我一直在尝试让carrierwave与亚马逊s3合作。而不是
storage :s3我有过
storage :fog将其更改为存储:s3会立即显示错误
所以我把它改成了storage :fog,就像下面的rdoc说的那样。
http://rubydoc.info/gems/carrierwave/frames
然而,当我尝试上传一张图片时,我得到了这个疯狂的错误。我也在使用设计性的宝石。
我的完整堆栈跟踪是
Excon::Errors::MovedPermanently in RegistrationsController#update
Excon::Errors::MovedPermanently (Expected(200) <=> Actual(301 Moved Permanently)
request => {:connect_timeout=>60, :headers=>{"Content-Length"=>95472, "Content-Type"=>"image/jpeg", "x-amz-acl"=>"private", "Cache-Control"=>"max-age=315576000", "Date"=>"Thu, 17 May 2012 05:28:55 +0000", "Authorization"=>"AWS AKIAIN6SC3YSGBSUKV4Q:kZOG9mG01jYn48ImFMYbgxAAQRk=", "Host"=>"user.a.777.s3-eu-west-1.amazonaws.com:443"}, :instrumentor_name=>"excon", :mock=>false, :read_timeout=>60, :retry_limit=>4, :ssl_ca_file=>"/Users/sasha/.rvm/gems/ruby-1.9.3-p125/gems/excon-0.13.4/data/cacert.pem", :ssl_verify_peer=>true, :write_timeout=>60, :host=>"user.a.777.s3-eu-west-1.amazonaws.com", :path=>"/uploads%2Fuser%2Fimage%2F59%2Fidea.jpg", :port=>"443", :query=>nil, :scheme=>"https", :body=>#<File:/Users/sasha/Desktop/rails_projects/blue_eyes/public/uploads/tmp/20120516-2228-19160-9893/idea.jpg>, :expects=>200, :idempotent=>true, :method=>"PUT"}
response => #<Excon::Response:0x007fd72a146820 @body="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>PermanentRedirect</Code><Message>The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.</Message><RequestId>F5F5AF888E837622</RequestId><Bucket>user.a.777</Bucket><HostId>IShK3GIthzCQysLOKXnR+ijJiHmMuUtXBOpFxQM4uCvJgkEHfmFn43LL4oWmpT82</HostId><Endpoint>s3.amazonaws.com</Endpoint></Error>", @headers={"x-amz-request-id"=>"F5F5AF888E837622", "x-amz-id-2"=>"IShK3GIthzCQysLOKXnR+ijJiHmMuUtXBOpFxQM4uCvJgkEHfmFn43LL4oWmpT82", "Content-Type"=>"application/xml", "Transfer-Encoding"=>"chunked", "Date"=>"Thu, 17 May 2012 05:29:00 GMT", "Connection"=>"close", "Server"=>"AmazonS3"}, @status=301>):
app/controllers/registrations_controller.rb:30:in `update'我甚至不知道那是什么意思。
在我的初始化器/carrierwave.rb e.rb中,我有..
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => 'somekey', # required
:aws_secret_access_key => 'secretkey', # required
:region => 'eu-west-1' # optional, defaults to 'us-east-1'
}
config.fog_directory = 'bucket.name' # required
#config.fog_host = 'https://s3.amazonaws.com' # optional, defaults to nil
config.fog_public = false # optional, defaults to true
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end我的上传文件中有
#storage :s3
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end我的gem文件有
gem 'carrierwave'
gem 'thin'
gem 'fog'当我引导我的服务器时,它也使用开发中的thin,而不是webrick。
我的配置有误吗?如果能帮上忙,我们将不胜感激!我被这个carrierwave/s3问题卡住了
发布于 2012-05-22 12:00:05
今天早些时候我遇到了这个问题,这是该地区的一个问题。只需将其取出并设置为默认设置即可。
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => 'somekey', # required
:aws_secret_access_key => 'secretkey' # required
}
config.fog_directory = 'bucket.name' # required
#config.fog_host = 'https://s3.amazonaws.com' # optional, defaults to nil
config.fog_public = false # optional, defaults to true
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end发布于 2012-07-11 23:38:29
对我来说,这个配置是有效的
config.fog_directory = 'bucket_name'
config.fog_host = 'https://s3-eu-west-1.amazonaws.com/bucket_name' 发布于 2016-03-26 15:26:16
我也有同样的问题。
遵循下面的3个步骤对我很有效。
1.创建存储桶时更改默认地域
2.编辑我的carrierwave.rb文件(如下所示)
initializers/carrierwave.rb
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => ENV['S3_ACCESS_KEY'],
:aws_secret_access_key => ENV['S3_SECRET_KEY'],
:region => ENV['S3_REGION']
}
config.fog_directory = ENV['S3_BUCKET']
end
end3.在命令行中配置heroku,如下所示:heroku config:set S3_REGION='your region'
https://stackoverflow.com/questions/10630430
复制相似问题