Sco*_* S. 18 ruby-on-rails heroku amazon-s3
我正在尝试在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'
Run Code Online (Sandbox Code Playgroud)
说明中没有提到有关在我的控制器中进行更改的任何内容.我看到一些例子告诉我要加入类似的东西:
在我的模型中,我有以下代码:
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
Run Code Online (Sandbox Code Playgroud)
在我的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']
}
}
Run Code Online (Sandbox Code Playgroud)
我还为Production和Dev创建了单独的存储桶,因此事情更清晰.
有任何想法吗?我比较新,这应该很容易.
提前致谢.
小智 19
我想你可能犯了同样的错误.在您的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']
}
}
Run Code Online (Sandbox Code Playgroud)
然后,按照开发人员中心文章的作者所述设置环境变量AWS_BUCKET,AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY.
B S*_*ven 10
做heroku config检查您的环境变量.
通常它们都是帽子并且有下垫而不是空格.
如果未设置,则应使用设置环境变量
heroku config:add BUCKET_NAME=my_bucket_name
Run Code Online (Sandbox Code Playgroud)
更新你的代码:
:bucket => ENV['BUCKET_NAME'],
Run Code Online (Sandbox Code Playgroud)
斯科特,对不起,如果这里有任何混淆.
我是开发中心文章的作者.正如上面提到的B Seven所述,需要在Heroku应用程序上设置AWS Config Vars.
Heroku最近更新了他们的文档(https://devcenter.heroku.com/articles/config-vars#example),set并且优先于add未来.
$ heroku config:set AWS_BUCKET=your_bucket_name
$ heroku config:set AWS_ACCESS_KEY_ID=your_access_key_id
$ heroku config:set AWS_SECRET_ACCESS_KEY=your_secret_access_key
| 归档时间: |
|
| 查看次数: |
14829 次 |
| 最近记录: |