PSC*_*ell 19 ruby-on-rails amazon-s3 paperclip
我正在使用Paperclip上传图像的简单项目.在我尝试将S3与Paperclip集成之前,一切都运行良好.在"上传"用户的图像后,我收到NoMethodError (undefined method 'match' for nil:NilClass):错误消息.这只有在我的S3配置运行时才会发生 - 如果我将文件评论完全上传.
我的配置:
development.rb:
....
....
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['AWS_BUCKET_ID'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
Run Code Online (Sandbox Code Playgroud)
我的型号:
class User < ActiveRecord::Base
has_attached_file :image_file, default_url: "/myapp/images/:style/missing.png"
validates_attachment_file_name :image_file, matches: [/png\Z/, /jpeg\Z/, /tiff\Z/, /bmp\Z/, /jpg\Z/]
Run Code Online (Sandbox Code Playgroud)
控制台的整个错误输出:
NoMethodError (undefined method `match' for nil:NilClass):
app/controllers/images_controller.rb:33:in `block in create'
app/controllers/images_controller.rb:32:in `create'
Run Code Online (Sandbox Code Playgroud)
我试过的事情:
我将AWS密钥和存储桶名称直接添加到代码中,而不是作为环境变量.
如上所述,我在我的环境文件中注释掉了AWS配置,它似乎完美无缺.
值得一提的是,我之前安装了fog宝石以开始配置Google云端存储,但决定坚持使用S3.我曾经gem uninstall fog删除了宝石,但似乎有一些依赖关系留在后面.
rgu*_*taz 37
添加:s3_region到您的配置图:
例如
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['AWS_BUCKET_ID'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
},
:s3_region => ENV['AWS_REGION']
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这是一个v5.0.0功能(在Beta中).因此,在文档中没有任何关于它的内容.但是在实际的5.0代码中有关于它的评论.
另外值得注意的是s3_permissions,papertrail 中的键现在需要一个字符串值(它用于接受符号).
:s3_permissions => 'public-read'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7830 次 |
| 最近记录: |