#ruby-on-rails #amazon-web-services #ruby-on-rails-3 #heroku #minimagick
Вопрос:
Я получаю эту ошибку в приложении Rails на Heroku:
NameError: uninitialized constant ActiveStorage::Analyzer::ImageAnalyzer::MiniMagick
/app/vendor/bundle/ruby/3.0.0/gems/activestorage-6.1.3/lib/active_storage/analyzer/image_analyzer.rb:46:in `rescue in read_image'
Это происходит в заданиях Sidekiq, созданных из ActiveStorage::AnalyzeJob
, и, похоже, срабатывает всякий раз, когда я пытаюсь загрузить изображение в свое хранилище AWS (изображения не попадают в мое хранилище).
Что странно, так это то, что у меня есть дублированная staging
версия приложения на Heroku, которая использует ту же конфигурацию, и она не вызывает этих ошибок (изображения действительно попадают в мое хранилище из промежуточного состояния).
Обе версии приложения используют одни и те же драгоценные камни и пакеты сборки.
В обеих версиях установлены ImageMagick 6.9.10-23 и mini_magick 4.11.0.
И в обеих версиях на консоли отображается одна и та же ошибка, если я ссылаюсь на упомянутый класс, например:
$ heroku run rails c -a my-staging-app
Running rails c on ⬢ my-staging-app... up, run.9122 (Free)
Loading staging environment (Rails 6.1.3)
irb(main):001:0* ActiveStorage::Analyzer::ImageAnalyzer
=> ActiveStorage::Analyzer::ImageAnalyzer
irb(main):002:0> ActiveStorage::Analyzer::ImageAnalyzer::MiniMagick
Traceback (most recent call last):
1: from (irb):2:in `<main>'
NameError (uninitialized constant ActiveStorage::Analyzer::ImageAnalyzer::MiniMagick)
Did you mean? MiniMime
Но я понятия не имею, почему промежуточное приложение не выдает ошибку при загрузке в AWS.
Кто-нибудь знает, как я могу исправить неинициализированную константу? (Откуда должен быть взят ссылочный класс?)
Комментарии:
1. Ты когда-нибудь понимал это?
2. Отчасти — я не знаю, почему я получал эту ошибку, но я понял, что моя конфигурация на самом деле не идентична между промежуточной и производственной — у меня все еще была конфигурация.active_storage.service = :локальная в production.rb. Я изменил его на config.active_storage.service = :amazon, и теперь файлы загружаются в мое хранилище AWS без каких-либо ошибок.