Sinatra CarrierWave Fog - NameError: неинициализированная константа Fog

Я пытался настроить CarrierWave с Sinatra и Fog для управления файлами S3. Я постоянно сталкиваюсь с проблемами, связанными с неопределенностью тумана. Это отлично работает, когда я меняю хранилище на: file.

До сих пор я также пробовал решения, упомянутые здесь NameError: неинициализированная константа CarrierWave::Storage::Fog, а здесь NameError: неинициализированная константа CarrierWave::Storage::Fog, heroku

Но мне пока не везет.

Вот моя общая настройка

Gemfile

gem 'fog', require: 'fog/aws'
gem 'carrierwave', '~> 2.0'

app.rb

require "carrierwave"

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider:              'fog/aws',                        # required
    aws_access_key_id:     ENV['AWS_ACCESS_KEY_ID'],     # required unless using use_iam_profile
    aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], # required unless using use_iam_profile
    use_iam_profile:       true,                         # optional, defaults to false
    region:                ENV['AWS_REGION'],            # optional, defaults to 'us-east-1'
  }
  config.fog_directory  = ENV['S3_BUCKET_NAME']
  config.fog_public     = false                                                 # optional, defaults to true
  config.fog_attributes = { cache_control: "public, max-age=#{365.days.to_i}" } # optional, defaults to {}
    config.fog_provider = 'fog/aws'
end

Добавил это в мой пользовательский класс

mount_uploader :profile_picture, ProfileImageUploader

И наконец мой ProfileImageUploader

class ProfileImageUploader < CarrierWave::Uploader::Base
  storage :fog
end

Я все еще застрял на этом выходе

NameError: uninitialized constant Fog
from ~/.rvm/gems/ruby-2.7.0/gems/carrierwave-2.1.0/lib/carrierwave/storage/fog.rb:159:in `connection'

1 ответ

Попробуйте использовать
gem 'fog-aws',
а затем
потребовать 'sinatra/activerecord',
потребовать 'carrierwave',
потребовать 'carrierwave/orm/activerecord',
потребовать 'fog/aws'

Другие вопросы по тегам