Rails活动存储无法自动加载常量ActiveStorage :: Blob :: Analyzable

时间:2018-06-11 07:36:14

标签: ruby-on-rails rails-activestorage aws-sdk-ruby

我已经将RAID从5.1.4更新到5.2并删除了Papaerclip以使用Active Storage。我正在使用数字海洋空间。在我的开发环境中,我在storage.yml中设置了凭据以将图像保存到digitalocean。

我在gemfile中添加了 aws-sdk-s3 gem(没有版本,可能是这个问题?)。

我为活动存储运行db:migrate

但是当我要提交带有图片上传html标记的表单时,我收到此错误:

  

无法自动加载常量ActiveStorage :: Blob :: Analyzable。

任何人都可以帮助我?

3 个答案:

答案 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)

答案 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] %>