Я обновил rails с 5.1.4 до 5.2 и удалил Papaerclip, чтобы использовать Active Storage. Я использую пространства digitalocean. В моей среде разработки я установил учетные данные в storage.yml для сохранения изображений в digitalocean.
Я добавил гем aws-sdk-s3 в gemfile (без версии, может в этом проблема?).
Я использую db:migrate для активного хранилища.
Но когда я собираюсь отправить форму с HTML-тегом загрузки изображения, я получаю такую ошибку:
Unable to autoload constant ActiveStorage::Blob::Analyzable.
Кто-нибудь может мне помочь?
@iGian да, я запустил rails active_storage: install





Вы установили MiniMagic Gem?
http://api.rubyonrails.org/classes/ActiveStorage/Analyzer/ImageAnalyzer.html
Это была моя проблема. Я обновился до Rails 6.0 и хотел использовать Vips для обработки изображений, однако Active Storage по-прежнему требует MiniMagik для анализа изображений. Господи, я ненавижу Active Storage.
Если вы обновляете старую версию 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 (с помощью редактора, который вы используете; в этом примере я использую атом) и убедитесь, что ни один из ваших элементов не прокомментирован через #. Когда вы закроете окно, ваши учетные данные должны быть автоматически сохранены, и к ним можно будет получить доступ.
Надеюсь, это поможет!
Вы не поверите, но я столкнулся с той же ошибкой.
Только чтобы узнать через час, что проблема была в моем файле 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] %>
Вы запускали
rails active_storage:installдля копирования миграций active_storage?