2017-09-11 29 views
2

RAILS 5のS3バケットとクリップを統合しています。私はhttps://coderwall.com/p/vv1iwg/set-up-ruby-on-rails-with-paperclip-5-and-s3-using-aws-sdk-v2を参照しています。NameError(初期化されていない定数Aws :: VERSION):

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

+0

@AjayBarot:資格情報は文字列になります。私も資格情報用のymlファイルを作成しようとしましたが、運がありません。 –

+0

'aws-sdk'のバージョンを確認してください。 * <2.0 *の場合、エラーを説明します。 – Pavan

+0

aws-sdk(3.0.1) –

答えて

3

私はaws-sdk (2.10.42)にAWS-SDKのバージョンをダウングレードしているし、それが動作します。

+0

最新バージョンを使用しています。これはaws-sdk 3.xのバグです。 –

+3

'aws-sdk 3.x'はこの定数を削除しましたが、現在のバージョン5.1.0の' paperclip'はこの定数に依存しているため、クラッシュします。 'gem 'aws-sdk'、 '〜> 2.10.47''はあなたにpaperclipでうまく動作する最新の2.xバージョンを提供します。 –

+0

これはPaperclip 5.1で動作しますが、Peter DeWeeseの回答もうまく動作し、現在のaws-sdkを使用できるようになりました。 – Polsonby

0

のバージョン3.0.1を使用しています、私は私のdevelopment.rbに次のように書かれている minimagickCarrierWaveの私の設定です、私はあなたの場合に似たようなことができると思います:

設定/初期化子/ 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 
1

ダウングレードする代わりに、現在のバージョンにpaperclipがない変数を導入することができます。このファイルを追加すると、aws-sdk 3.0.1とpaperclip 5.1.0で動作し、awsの変更に対応するようにpaperclipが更新されるまで動作します。

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

これは古いバージョンのaws-sdkを使用するよりも優れた解決策です。 – Polsonby

関連する問題