AWS S3,Paperclip缺少必需:bucket选项
我正在尝试在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 ', 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和Dev创建了单独的存储桶,因此事情变得更加清晰。
有任何想法吗? 我比较新,这应该很容易。
提前致谢。
我想你可能犯了同样的错误。 在您的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。
heroku config
检查您的环境变量。
通常它们都是帽子并且有下垫而不是空格。
如果未设置,则应使用设置环境变量
heroku config:add BUCKET_NAME=my_bucket_name
更新你的代码:
:bucket => ENV['BUCKET_NAME'],
Heroku参考
斯科特,对不起,如果这里有任何混乱。
我是开发中心文章的作者。 正如上面提到的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
$ 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
在使用环境变量设置值时,请确保重新启动CLI。 不要像我一样,使用ENV变量正确设置Paperclip和AWS,然后在Google上浪费大量时间,通过退出并重新打开终端来解决问题。 😞
- 插入schema.rb表“教师”这一行
create_table "instructors" do |t| ... t.string "bucket" end
- 添加到控制器
@instructor[:bucket] = ENV['S3_BUCKET_NAME']
- 运行“rake db:setup”
- Rails 3,paperclip + S3 – 如何存储实例并保护访问权限
- AWS的未定义方法`find’:: S3 :: Bucket:Class
- Rails错误 – 无法加载此类文件 – aws-sdk(您可能需要安装aws-sdk gem)
- 如何将已存储在s3上的文件添加到由相同数据存储区支持的carrierwave?
- 有没有办法在推送到heroku时将资产管道资产资产转到s3?
- rails assets:在slug期间为s3错误预编译:当设置env时,雾提供程序和目录不能为空
- 将video上传到heroku时出错
- rails中的AWS S3 – 如何设置s3_signature_version参数
- 密钥就在那里,但我仍然得到`fetch’:找不到密钥:“S3_BUCKET_NAME”(KeyError)