Ruby on rails 在开发中将文件上载到Amazon s3时遇到问题
能够在Heroku的生产环境中将文件上载到AmazonS3,但在我的开发环境中无法这样做。以下是目前的情况 Development.rbRuby on rails 在开发中将文件上载到Amazon s3时遇到问题,ruby-on-rails,ruby,amazon-s3,ruby-on-rails-4,Ruby On Rails,Ruby,Amazon S3,Ruby On Rails 4,能够在Heroku的生产环境中将文件上载到AmazonS3,但在我的开发环境中无法这样做。以下是目前的情况 Development.rb config.paperclip_defaults = { :storage => :s3, :s3_credentials => { :bucket => ENV['S3_BUCKET_NAME'], :access_key_id => ENV['AWS_ACCESS_KEY_ID'], :secret
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['S3_BUCKET_NAME'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
按照的建议,我在配置目录中创建了一个文件application.yml
,其中包含以下代码:
AWS_ACCESS_KEY_ID: "***"
AWS_SECRET_ACCESS_KEY: "***"
AWS_BUCKET: "themoderntrunk"
但我没有改变我的设计模式
has_attached_file :photo, :styles => { :thumbnail => "80x80#",
:small => "150x150>"
}
当我现在上传文件的时候,我得到了这个错误
missing required :bucket option
我见过很多人都有同样的问题,但没有一个答案能解决我的问题。任何指导都将不胜感激。谢谢。具有寓意的是,这个特定的问题通常是通过使用Ruby的规范云服务库来解决的
# Gemfile
gem 'fog'
运行bundle install
,然后按如下方式修改配置文件:
# config/environments/development.rb
Paperclip::Attachment.default_options.merge!(
:storage => :fog,
:fog_credentials => {
:provider => 'AWS',
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
},
:fog_directory => ENV['AWS_BUCKET'],
:bucket => ENV['AWS_BUCKET']
)
重新启动服务器以重新加载环境–上载应该可以工作
更新:
在重读您的问题时,我注意到您要传递一个名为ENV['S3\u BUCKET\u NAME']
的环境全局变量,但实际上应该传递的变量名为ENV['AWS\u BUCKET']
。我怀疑这就是抛出missing required:bucket选项的原因。重命名变量可能会解决原始问题:
# config/environments/development.rb
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['AWS_BUCKET'], # Matches global declaration in `application.yml`
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
您是否重新启动了服务器以将应用程序.yml
加载到您的环境中?是的,我已经重新启动了服务器。我是否应该使用与我在生产中使用的存储桶不同的存储桶?这不重要,IFAIK。我已经用一个可能的修正更新了我的答案。好吧,我现在就这么做,看看会发生什么。这个gem是否应该改变我的生产环境中的任何东西?它不应该改变,尽管你也可以在生产环境中使用Fog进行部署–这是我在自己的部署中使用的。这解决了缺少的bucket错误,但现在给了我缺少的必需参数:aws\u access\u key\id,aws\u secret\u access\u key
error。我要研究如何解决这个问题