1

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

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

我运行db:migrate主动存储。

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

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

任何人都可以帮助我吗?

4

3 回答 3

2

你安装了 MiniMagic Gem

http://api.rubyonrails.org/classes/ActiveStorage/Analyzer/ImageAnalyzer.html

于 2018-06-11T16:36:59.117 回答
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)并确保您的所有项目都没有通过 # 注释。当您关闭窗口时,您的凭据应自动保存并可访问。

希望有帮助!

于 2018-08-27T21:32:34.680 回答
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] %>
于 2018-09-06T18:03:36.907 回答