アプリケーションに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 provider
carrierwave例外が発生します。フォグクレデンシャルを使用すると(config.storageを:fileに設定しません)、テストは期待どおりに機能します。
Carrierwave 0.7.1、Rails 3.2.8、Ruby 1.9.3、Rspec 2.10
ありがとう。