【问题标题】:Sinatra CarrierWave Fog - NameError: uninitialized constant FogSinatra CarrierWave 雾 - NameError:未初始化的常量雾
【发布时间】:2020-10-20 00:49:32
【问题描述】:

我一直在尝试使用 Sinatra 和 Fog 设置 CarrierWave 以进行 S3 文件管理。我经常遇到关于雾未定义的问题。当我将存储更改为 :file 时,这工作正常。

到目前为止,我还尝试过NameError: uninitialized constant CarrierWave::Storage::FogNameError: uninitialized constant CarrierWave::Storage::Fog, heroku 提到的解决方案

但到目前为止我没有运气。

这是我的整体设置

宝石文件

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'

【问题讨论】:

  • 你还需要雾:require "fog"
  • 尽管LoadError: cannot load such file -- excon from /Users/anuragramdasan/.rvm/gems/ruby-2.7.0/gems/activesupport-6.0.3.2/lib/active_support/dependencies.rb:324:in require'`仍然碰壁'`
  • 它基于 Rails,因此您很有可能需要包含 require 'active_support' 以访问雾和载波使用的不同资源
  • 我怀疑错误似乎来自 activesupport 模块。所以我不太确定找到积极支持是问题所在。似乎没有找到 activesupport 中的 excon。

标签: ruby sinatra carrierwave fog fog-aws


【解决方案1】:

尝试使用
宝石'雾-aws'
然后
需要'sinatra/activerecord'
需要“载波”
需要“carrierwave/orm/activerecord”
需要“雾/aws”

【讨论】:

    猜你喜欢
    • 2013-08-21
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2015-10-29
    相关资源
    最近更新 更多