我在Heroku上的一个Rails应用程序上得到了这个错误:
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'
字符串
它发生在从ActiveStorage::AnalyzeJob
生成的Sidekiq作业中,并且似乎在我尝试将图像上传到AWS存储时触发(图像没有到达我的存储桶)。
奇怪的是,我在Heroku上有一个重复的staging
版本的应用程序,使用相同的配置,它不会触发这些错误(图像确实从staging到达我的bucket)。
这两个版本的应用程序都使用相同的gems和buildpack。
两个版本都安装了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
型
但我不知道为什么staging应用程序在上传到AWS时没有遇到错误。
有谁知道如何修复未初始化的常量?(引用的类需要从哪里来?)
1条答案
按热度按时间mfpqipee1#
我不知道为什么我得到这个特定的错误,但我意识到我的配置实际上是不一样的登台和生产。
我在production.rb中仍然有
config.active_storage.service = :local
。我将其更改为
config.active_storage.service = :amazon
,现在文件上传到我的AWS存储桶中,没有任何错误。