I\'m working on upgrading from attachment_fu to carrierwave, since attachment_fu is broken in rails 3.
None of the tests are able to run, because we have invalid fixture
The only way I've managed to get this to work is to use a storage provider specifically for testing that doesn't actually save/read files.
In your config/initializers/carrier_wave.rb
Add a NullStorage class that implements the minimum interface for a storage provider.
# NullStorage provider for CarrierWave for use in tests. Doesn't actually
# upload or store files but allows test to pass as if files were stored and
# the use of fixtures.
class NullStorage
attr_reader :uploader
def initialize(uploader)
@uploader = uploader
end
def identifier
uploader.filename
end
def store!(_file)
true
end
def retrieve!(_identifier)
true
end
end
Then when initializing CarrierWave add a clause for the test environment, e.g.,
if Rails.env.test?
config.storage NullStorage
end
Here is a gist of my complete carrier_wave.rb for reference. It also includes how to setup S3 for uploads in staging/production and local storage for development so you can see how to configure CarrierWave in context.
Once CarrierWave is configured you can simply put any string in the fixtures column to simulate an uploaded file.