我试图在Heroku上使用Paperclip和SWS S3来让用户上传图像.
我没有我的凭据存储在yml文件中.我按照Heroku页面上的说明进行操作:
https://devcenter.heroku.com/articles/paperclip-s3
但是,当我尝试运行我的应用程序并上传图像时,我收到以下消息:
missing required :bucket option Rails.root: /Users/scottsipiora/Sites/clycss Application Trace | Framework Trace | Full Trace app/controllers/instructors_controller.rb:63:in `block in update' app/controllers/instructors_controller.rb:62:in `update'
这些说明并没有提及在我的控制器上进行更改的任何内容.我已经看到一些例子,告诉我放在这样的东西:
在我的模型中,我有以下代码:
class Instructor < ActiveRecord::Base attr_accessible :bio,:hometown,:name,:school,:sort_order,:started_sailing,:started_teaching,:photo has_attached_file :photo,styles: { thumb: '100x100>',square: '200x200#',medium: '300x300>' } end
在我的production.rb我有(显然用模拟凭证取代我的真实凭据):
config.paperclip_defaults = { :storage => :s3,:s3_credentials => { :bucket => ENV['bucket name'],:access_key_id => ENV['key_id'],:secret_access_key => ENV['access_key'] } }
我还为生产和开发创建了单独的桶,所以事情更干净.
有任何想法吗?我比较新,这应该很简单.
提前致谢.
解决方法
我想你可能犯了同样的错误.在您的production.rb文件中,不要编辑文本以添加特定的S3键.只需按照教程中列出的方式直接复制粘贴文本.
#production.rb config.paperclip_defaults = { :storage => :s3,:s3_credentials => { :bucket => ENV['AWS_BUCKET'],:access_key_id => ENV['AWS_ACCESS_KEY_ID'],:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'] } }
然后,按照开发中心文章的作者的描述,设置环境变量AWS_BUCKET,AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY.