【问题标题】:NameError: uninitialized constant CarrierWave::Storage::FogNameError:未初始化的常量 CarrierWave::Storage::Fog
【发布时间】:2016-02-03 10:25:43
【问题描述】:

我已经尝试过 stackoverflow 和 github 上给出的几种解决方案,但找不到解决方案。我正在为我的应用使用 carrierwave (0.10.0)fog-aws (0.8.1) gem 来将图像上传到 S3。

NameError: uninitialized constant CarrierWave::Storage::Fog
from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/configuration.rb:73:in `eval'
from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/configuration.rb:73:in `eval'
from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/configuration.rb:73:in `storage'
from /home/pulkit/dev/roid/rails/appbrowzer/app/uploaders/publisher_action_icon_uploader.rb:11:in `<class:PublisherActionIconUploader>'
from /home/pulkit/dev/roid/rails/appbrowzer/app/uploaders/publisher_action_icon_uploader.rb:3:in `<top (required)>'
from /home/pulkit/dev/roid/rails/appbrowzer/app/models/manage_channel_action.rb:3:in `<class:ManageChannelAction>'
from /home/pulkit/dev/roid/rails/appbrowzer/app/models/manage_channel_action.rb:1:in `<top (required)>'
from (irb):1
from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/console.rb:110:in `start'
from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/console.rb:9:in `start'
from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:68:in `console'
from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>'
from bin/rails:9:in `require'
from bin/rails:9:in `<main>'

当我尝试使用 fog(1.37.0) gem 而不是 fog-aws gem 时,我得到了不同的错误。

ArgumentError:  is not a recognized provider
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/fog-core-1.35.0/lib/fog/core/services_mixin.rb:12:in `new'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/fog-core-1.35.0/lib/fog/storage.rb:27:in `new'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/storage/fog.rb:102:in `connection'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/storage/fog.rb:356:in `connection'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/storage/fog.rb:368:in `directory'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/storage/fog.rb:261:in `store'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/storage/fog.rb:80:in `store!'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/store.rb:59:in `block in store!'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/callbacks.rb:17:in `with_callbacks'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/store.rb:58:in `store!'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/mount.rb:375:in `store!'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/carrierwave-0.10.0/lib/carrierwave/mount.rb:207:in `store_icon!'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:432:in `block in make_lambda'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:228:in `block in halting_and_conditional'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:506:in `block in call'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.5/lib/active_support/callbacks.rb:506:in `each'
... 10 levels...
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/transactions.rb:220:in `transaction'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/transactions.rb:348:in `with_transaction_returning_status'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/transactions.rb:286:in `block in save'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/transactions.rb:301:in `rollback_active_record_state!'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/transactions.rb:285:in `save'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.5/lib/active_record/persistence.rb:34:in `create'
    from (irb):1
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/console.rb:110:in `start'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/console.rb:9:in `start'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:68:in `console'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /home/pulkit/.rvm/gems/ruby-2.3.0/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>'
    from bin/rails:9:in `require'
    from bin/rails:9:in `<main>'2.3.0 :002 > 

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 carrierwave fog fog-aws


    【解决方案1】:

    将您的 gemfile 从 gem "fog-aws" 更新为 gem 'fog',需要:'fog/aws'

    【讨论】:

    • 现在我收到ArgumentError: is not a recognized provider
    • 这不是正确的解决方案。 gem 'fog-aws' 有效。你只需要确保carrierwave配置在config/initializers/carrierwave.rb
    【解决方案2】:

    确保您的配置文件(carrierwave.rb)在初始化文件夹中。

    【讨论】:

      【解决方案3】:

      通过在我的 Gemfile 中添加 Fog gem 解决了这个问题

      gem 'fog', require: 'fog/aws'
      

      lib/carrierwave/storage/fog.rb 中删除了 fog-aws gem 中提到的配置文件,并将载波配置放在 config/initializers/carrierwave.rb

      CarrierWave.configure do |config|
        config.fog_credentials = {
          :provider               => 'AWS',
          :aws_access_key_id      => 'XYZ',
          :aws_secret_access_key  => 'ABC',
          :region                 => 'region'
        }
        config.fog_directory  = 'bucket_name'
      end
      

      【讨论】:

      • 它不工作。应用程序被配置为文件存储,而不是 s3。
      • 这不是正确的解决方案。 gem 'fog-aws' 有效。你只需要确保carrierwave配置在config/initializers/carrierwave.rb
      【解决方案4】:

      您是否添加了“fog-aws”宝石?我觉得我有一个类似的错误,因为没有遵循文档的这一部分:https://github.com/carrierwaveuploader/carrierwave#using-amazon-s3

      【讨论】:

        【解决方案5】:

        对我来说,这是通过将 config.storage = :fog 移动到 Carrierwave 初始化程序中的 config.fog_credentials = ... 行之后来解决的。

        via @mshibuya

        【讨论】:

          猜你喜欢
          • 2019-03-28
          • 1970-01-01
          • 2015-07-07
          • 1970-01-01
          • 2012-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多