我已经将RAID从5.1.4更新到5.2并删除了Papaerclip以使用Active Storage。我正在使用数字海洋空间。在我的开发环境中,我在storage.yml
中设置了凭据以将图像保存到digitalocean。
我在gemfile中添加了 aws-sdk-s3 gem(没有版本,可能是这个问题?)。
我为活动存储运行db:migrate
。
但是当我要提交带有图片上传html标记的表单时,我收到此错误:
无法自动加载常量ActiveStorage :: Blob :: Analyzable。
任何人都可以帮助我?
答案 0 :(得分:1)
如果要从Rails的较旧版本更新到包含ActiveStorage的版本,则创建样板文件storage.yml很重要。您可能已通过
存储了凭据rails credentials:edit
您的S3设置可能与此类似:
amazon:
service: S3
access_key_id: <%= Rails.application.credentials.aws[:access_key_id] %>
secret_access_key: <%= Rails.application.credentials.aws[:secret_access_key] %>
region: <%= Rails.application.credentials.aws[:region] %>
bucket: <%= Rails.application.credentials.aws[:bucket] %>
我遇到的问题是,当我将凭据保存在storage.yml上时,所有密钥都保存为注释。运行EDITOR='atom --wait' rails credentials:edit
(使用您正在使用的编辑器;在本示例中,我使用的是atom),并确保没有任何项目通过#进行注释。关闭窗口时,您的凭据应自动保存并可以访问。
希望有帮助!
答案 1 :(得分:0)
您安装了MiniMagic Gem
吗?http://api.rubyonrails.org/classes/ActiveStorage/Analyzer/ImageAnalyzer.html
答案 2 :(得分:0)
信不信由你,我遇到了同样的错误。
一小时后才发现问题出在我的storage.yaml
文件中
日志中有错误
Psych::SyntaxError - (<unknown>): did not find expected key while parsing a block mapping at line 1 column 1:
这意味着Psych
(是YAML
解析器)在解析文件时遇到问题。
由于间距问题
,它引发了Unable to autoload constant ActiveStorage::Blob::Analyzable
错误
希望这对在那里的人有帮助
之前的示例
| amazon:
service: S3
access_key_id: <%= Rails.application.credentials.aws[:access_key_id] %>
secret_access_key: <%= Rails.application.credentials.aws[:secret_access_key] %>
region: <%= Rails.application.credentials.aws[:region] %>
bucket: <%= Rails.application.credentials.aws[:bucket] %>
之后的示例
|amazon:
service: S3
access_key_id: <%= Rails.application.credentials.aws[:access_key_id] %>
secret_access_key: <%= Rails.application.credentials.aws[:secret_access_key] %>
region: <%= Rails.application.credentials.aws[:region] %>
bucket: <%= Rails.application.credentials.aws[:bucket] %>