我的应用程序中有两个载波上传器。 ImageUploader用于本地上传,ImageRemoteUploader用于使用雾上传到Amazon S3存储。 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
运营商浪潮异常。当我使用雾凭证(我没有将config.storage设置为:file)时,测试按预期工作。
Carrierwave 0.7.1,Rails 3.2.8,Ruby 1.9.3,Rspec 2.10
感谢。
答案 0 :(得分:3)
我会尝试按Carrierwave docs中的建议将config.storage
和config.enable_processing
行移至lib/initializers/carrierwave.rb
。
Fog
也有自己的模拟支持,可以通过在示例之前运行Fog.mock!
来启用。这可能是一种更好的方法。