Capistrano - Carrierwave LoadError: cannot load such file -- carrierwave/processing/mime_types

Capistrano - Carrierwave LoadError: cannot load such file -- carrierwave/processing/mime_types

当我 运行 上限生产部署时,我一直 运行 使用载波解决这个错误。我在下面发布了我的载波设置。

Tasks: TOP => deploy:assets:precompile
The deploy has failed with an error: Exception while executing as deploy@104.236.193.148: rake exit status: 1
rake stdout: Nothing written
rake stderr: rake aborted!
LoadError: cannot load such file -- carrierwave/processing/mime_types
 /home/deploy/aldrinclement/shared/bundle/ruby/2.3.0/gems/activesupport-         4.2.6/lib/active_support/dependencies.rb:274:in `require'
 /home/deploy/aldrinclement/shared/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `block in require'
 /home/deploy/aldrinclement/shared/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:240:in `load_dependency'
 /home/deploy/aldrinclement/shared/bundle/ruby/2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
 /home/deploy/aldrinclement/releases/20170103201423/app/uploaders/author_image_uploader.rb:1:in `<top (required)>'

Carrierwave.rb

if Rails.env.production? || Rails.env.staging?
  CarrierWave.configure do |config|
    config.fog_credentials = {
        provider:                   'AWS',
        aws_access_key_id:         Rails.application.secrets.AWS_ACCESS_KEY_ID,
        aws_secret_access_key:     Rails.application.secrets.AWS_SECRET_ACCESS_KEY,
        region:                    Settings.aws_region
    }
    config.fog_directory = Settings.aws_s3_bucket_name
    config.permissions = 0666
    config.directory_permissions = 0777
    config.storage = :fog
  end
end

CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/

我的 secrets.yml 定义了 AWS 密钥 - 我 运行 丢失了 aws 密钥,并通过 deploy.rb 文件中的符号链接 secrets.yml 解决了这个问题。我在我的 Gemfile 中使用 carrierwave 1.0.0。

mime_types 文件已从 carrierwave 中删除,参见 commit

您可能在 app/uploaders/author_image_uploader.rb 的顶部有 require 'carrierwave/processing/mime_types'。您需要从项目中删除 carrierwave mime_types 引用并切换到 mime-types gem,它现在是 carrierwave 的运行时依赖项,或者回滚到以前的 carrierwave 版本。