我正在关注One Month Rails课程,并且我坚持通过Heroku将图像上传到AWS服务器。我的Github文件夹:https://github.com/phanatuan/pinteresting
Heroku日志中的错误是:
"ArgumentError (missing required :bucket option):
app/controllers/pins_controller.rb:31:in `block in create'
app/controllers/pins_controller.rb:30:in `create' "
我知道这是很多人得到的错误。但是,当我搜索其他Stackoverflow问题和答案时,我很难找到解决方案。
非常感谢您的帮助
Tuan
答案 0 :(得分:2)
我目前正在参加OneMonth Rails教程,这对我来说也是一件非常头疼的问题!
而不是遵循OMRails告诉你的内容,即:
$ heroku config:set AWS_BUCKET=BUCKET_NAME_VALUE
请改用:
$ heroku config:set S3_BUCKET_NAME=BUCKET_NAME_VALUE
然后用:
将其包起来$ heroku run rake db:migrate
$ git push heroku master
如果您已经设置了'AWS_ACCESS_KEY_ID'和'AWS_SECRET_ACCESS_KEY',则无需重复或更改这些内容。
最终代码应如下所示:
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']
}
}
答案 1 :(得分:1)
尝试在关联has_attached_file
class Pin < ActiveRecord::Base
belongs_to :user
has_attached_file :image,
:style => { :medium => "300x300>", :thumb => "100x100>" },
:storage => :s3,
:bucket => ENV['MY_BUCKET_NAME']
validates :image, presence: true
validates :description, presence: true
end
更明确地说,定义所有内联配置
class Pin < ActiveRecord::Base
belongs_to :user
has_attached_file :image,
:style => { :medium => "300x300>", :thumb => "100x100>" },
:storage => :s3,
:bucket => ENV['MY_BUCKET_NAME'],
:s3_credentials => {
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
},
:s3_permissions => 'private',
:url => ":s3_domain_url"
validates :image, presence: true
validates :description, presence: true
end
我在这个例子中使用了ENV vars,但你显然可以对你的配置值进行硬编码。从那里开始,然后回到将配置放入初始化器。
答案 2 :(得分:1)
我遇到了同样的问题,并通过运行来解决:
$ heroku config:set S3_BUCKET_NAME=BUCKET_NAME_VALUE
确保在production.rb文件中将名称设置为“S3”:
# Sets Paperclip to upload images to Amazon S3
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']
}
}
我也很头疼。
执行上述操作,然后添加并提交并推送到git,然后运行
git push heroku master
然后你会很高兴去。我认为你不需要做
heroku run rake db:migrate
在这种情况下,但我可能错了。我也是新手!