NameError(未初始化的常量Aws :: VERSION):

时间:2017-09-11 06:47:06

标签: ruby-on-rails amazon-s3 paperclip

我正在RAILS 5中将paperclip与S3存储桶集成。我指的是https://coderwall.com/p/vv1iwg/set-up-ruby-on-rails-with-paperclip-5-and-s3-using-aws-sdk-v2。 我在开发中写了以下内容.rb:

  config.paperclip_defaults = {
    storage: :s3,
    s3_region: 'us-west-2',
    s3_credentials: {
      bucket: 'mybucket',
      access_key_id: 'my id',
      secret_access_key: 'my secret key'
      }
    } 

上传图片时出现以下错误:

NameError (uninitialized constant Aws::VERSION):

我使用的是gem aws-sdk

的3.0.1版

3 个答案:

答案 0 :(得分:3)

我已将aws-sdk版本降级为aws-sdk (2.10.42)并且可以正常运行。

答案 1 :(得分:2)

您可以在当前版本中引入缺少回形针的变量,而不是降级。添加此文件适用于aws-sdk 3.0.1和paperclip 5.1.0,并且可能会一直有效,直到更新paperclip以适应aws更改。

# config/initializers/aws.rb
Aws::VERSION =  Gem.loaded_specs["aws-sdk"].version

答案 2 :(得分:0)

以下是CarrierWave minimagick的配置,我认为可以为您的情况做类似的事情:

<强>配置/初始化/ carrier_wave.rb

CarrierWave.configure do |config|       
     config.fog_credentials = {     
         provider:              'AWS',      
         aws_access_key_id:     ENV['S3_ACCESS_KEY'],       
         aws_secret_access_key: ENV['S3_SECRET_KEY'],       
         region:                ENV['S3_REGION']        
     }      
     config.fog_directory     =  ENV['S3_BUCKET']       
 end