1

アプリケーションに2つのcarrierwaveアップローダーがあります。ImageUploaderはローカルにアップロードするためのものであり、ImageRemoteUploaderはフォグを使用してAmazonS3ストレージにアップロードするためのものです。ImageUploaderのストレージはに設定され:file、ImageRemoteUploaderのストレージはに設定されてい:fogます。この設定は正常に機能しますが、rspecテストの設定を開始すると、状況が変わります。

テスト中にストレージを使用するようにImageRemoteUploaderを変更すると、問題が発生し:fileます。これは、フォグ初期化ファイルで行います。ファイル /config/initializers/fog.rbは次のようになります。

CarrierWave.configure do |config|
  if Rails.env.test?
    config.storage = :file
    config.enable_processing = false
  else
    config.fog_credentials = {
    :provider               => 'AWS',       # required
    :aws_access_key_id      => 'XXXXXXXX',       # required
    :aws_secret_access_key  => 'XXXXXX',       # required
    :region                 => 'XXXX'  # optional, defaults to 'us-east-1'
    }
    config.fog_directory  = 'xxx'                     # required
    config.fog_public     = true                                   
  end 
end

これを行うと、ArgumentError is not a recognized storage providercarrierwave例外が発生します。フォグクレデンシャルを使用すると(config.storageを:fileに設定しません)、テストは期待どおりに機能します。

Carrierwave 0.7.1、Rails 3.2.8、Ruby 1.9.3、Rspec 2.10

ありがとう。

4

1 に答える 1

3

Carrierwave docsで推奨されているように、config.storageconfig.enable_processing行を に移動してみます。lib/initializers/carrierwave.rb

FogFog.mock!サンプルの前に実行することで有効になる、独自のモッキング サポートもあります。これはより良いアプローチかもしれません。

于 2012-11-30T03:17:33.967 に答える